Dynamic difficulty adjustment

ABSTRACT

Embodiments of systems presented herein may perform automatic granular difficulty adjustment. In some embodiments, the difficulty adjustment is undetectable by a user. Further, embodiments of systems disclosed herein can review historical user activity data with respect to one or more video games to generate a game retention prediction model that predicts an indication of an expected duration of game play. The game retention prediction model may be applied to a user&#39;s activity data to determine an indication of the user&#39;s expected duration of game play. Based on the determined expected duration of game play, the difficulty level of the video game may be automatically adjusted.

RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.16/401,389, which was filed May 2, 2019 and is titled “DYNAMICDIFFICULTY ADJUSTMENT,” the disclosure of which is hereby incorporatedby reference herein in its entirety for all purposes, and which is acontinuation of U.S. application Ser. No. 15/896,608, which was filedFeb. 14, 2018 and is titled “DYNAMIC DIFFICULTY ADJUSTMENT,” thedisclosure of which is hereby incorporated by reference herein in itsentirety for all purposes, and which is a continuation of U.S.application Ser. No. 15/064,082, which was filed Mar. 8, 2016 and istitled “DYNAMIC DIFFICULTY ADJUSTMENT,” the disclosure of which ishereby incorporated by reference herein in its entirety for allpurposes. Any and all priority claims identified in the Application DataSheet, or any correction thereto, are hereby incorporated by referenceunder 37 CFR 1.57.

BACKGROUND

Software developers typically desire for their software to engage usersfor as long as possible. The longer a user is engaged with the software,the more likely that the software will be successful. The relationshipbetween the length of engagement of the user and the success of thesoftware is particularly true with respect to video games. The longer auser plays a particular video game, the more likely that the user enjoysthe game and thus, the more likely the user will continue to play thegame.

Often, games that are too difficult or too easy will result in lessenjoyment for a user. Consequently, the user is likely to play the gameless. Thus, one of the challenges of game development is to design agame with a difficulty level that is most likely to keep a user engagedfor a longer period of time.

SUMMARY OF EMBODIMENTS

The systems, methods and devices of this disclosure each have severalinnovative aspects, no single one of which is solely responsible for theall of the desirable attributes disclosed herein. Details of one or moreimplementations of the subject matter described in this specificationare set forth in the accompanying drawings and the description below.

In certain embodiments, a computer-implemented method is disclosed thatmay be implemented by an interactive computing system configured withspecific computer-executable instructions to at least determine a useridentifier of a user who is playing a video game on a user computingdevice. Further, the method may include accessing a set of input dataassociated with the user based at least in part on the user identifierof the user. The set of input data may comprise user interaction dataassociated with the user's interaction with the video game. In addition,based at least in part on the set of input data, the method may includedetermining a predicted churn rate for the user. The predicted churnrate may correspond to a probability that the user ceases to play thevideo game. Further, based at least in part on the predicted churn ratefor the user, the method may include selecting a seed value for a knobassociated with the video game. The knob may include a variable thatwhen adjusted causes a modification to a state of the video game.Moreover, the method may include modifying execution of the video gameby adjusting the knob based at least in part on the seed value.

In some implementations, modifying the execution of the video gamecomprises adjusting a difficulty of the video game. Further, the userinteraction data may include recent user interaction data that is morerecent than a threshold age time period and historical user interactiondata that less recent than a threshold age time period. In some cases,the recent user interaction data is weighted more heavily than thehistorical user interaction data. Further, in some cases, the thresholdage time period corresponds to a number of play sessions of the videogame by the user.

For some embodiments, determining the predicted churn rate comprisesproviding the set of input data to a parameter function. The parameterfunction may be generated based at least in part on a machine learningalgorithm. Further, the method may include determining the predictedchurn rate based at least in part on an output of the parameterfunction. Moreover, generating the parameter function may include atleast accessing a second set of input data. The second set of input datamay be associated with a plurality of users who play the video game andmay include data indicating churn rates for past game play for theplurality of users. In addition, the method may include using themachine learning algorithm to determine the parameter function based atleast in part on the set of input data. Moreover, the method may includeassociating a penalty with the parameter function based at least in parton one or more of the following: a number of variables included in theparameter function, a complexity of a mathematical algorithm associatedwith the parameter function, or an accuracy of an output of theparameter function compared to the output data. Additionally, the methodmay include selecting the parameter function from a plurality ofparameter functions based at least in part on a penalty value associatedwith at least some of the parameter functions from the plurality ofparameter functions.

In some implementations, based at least in part on the set of inputdata, the method includes determining a reason for the predicted churnrate. In addition, based at least in part on the reason for thepredicted churn rate, the method may include selecting the seed valuefor the knob associated with the video game. Further, modifying theexecution of the video game may include providing the seed value to theuser computing device.

In certain embodiments, a system comprising an electronic data storeconfigured to store user interaction data with respect to a video gameis disclosed. The system may further include a hardware processor incommunication with the electronic data store. The hardware processor maybe configured to execute specific computer-executable instructions to atleast determine a user identifier of a user who is playing a video gameand access a set of input data associated with the user based at leastin part on the user identifier of the user. The set of input data maycomprise user interaction data associated with the user's interactionwith the video game. Further, based at least in part on the set of inputdata, the system can determine a retention probability associated withthe probability that the user ceases to play the video game. Moreover,based at least in part on the retention probability for the user, thesystem can identify an adjustment value to a variable in the video game.The variable may be associated with a level of difficulty of the videogame. In addition, the system may modify execution of the video gamebased at least in part on the adjustment value.

With some implementations, the modified execution of the video game isundetectable by the user. Moreover, in some cases, at least theaccessing the set of input data, the determining the retentionprobability, the identifying the adjustment value, and the modifying theexecution of the video game is repeated in response to a trigger eventoccurring during a play session of the video game by the user.

In addition, determining the retention probability may include providingthe set of input data to a prediction model. The prediction model may begenerated by a machine learning system. Further, the system candetermine the retention probability based at least in part on an outputof the prediction model. Moreover, in some cases, the hardware processoris further configured to generate the prediction model by executingspecific computer-executable instructions to at least access a secondset of input data. The second set of input data may be associated with aplurality of users who play the video game and may include dataassociated with a retention rate for the plurality of users. Further,the system may use the machine learning system to determine theprediction model based at least in part on the set of input data and theretention rate. In some cases, at least some prediction models from aplurality of prediction models are associated with a penalty. At leastone prediction model from the plurality of prediction models may beassociated with a different penalty than at least one other predictionmodel, and the hardware processor may be further configured to executespecific computer-executable instructions to at least select theprediction model from the plurality of prediction models based at leastin part on the penalty associated with the plurality of predictionmodels.

Certain embodiments disclosed herein relate to a non-transitorycomputer-readable storage medium storing computer executableinstructions that, when executed by one or more computing devices,configure the one or more computing devices to perform operationscomprising accessing a set of input data associated with a user. The setof input data may include user interaction data associated with theuser's interaction with the video game. Further, based at least in parton the set of input data, the operations may include determining aretention probability associated with the probability that the userceases to play the video game. Moreover, based at least in part on theretention probability for the user, the operations may includeidentifying a difficulty level for the video game. In addition, based atleast in part on the difficulty level for the video game, the operationsmay include identifying one or more seed values associated with thedifficulty level.

In certain embodiments, the operations further comprise modifying thedifficulty level of the video game by selecting a seed value from theone or more seed values to use during execution of the video game.Moreover, the operations may further comprise determining the retentionprobability by at least providing the set of input data to a predictionmodel. The prediction model may be generated by a machine learningsystem. Furthermore, the operations may include determining theretention probability based at least in part on an output of theprediction model.

Although certain embodiments and examples are disclosed herein,inventive subject matter extends beyond the examples in the specificallydisclosed embodiments to other alternative embodiments and/or uses, andto modifications and equivalents thereof.

BRIEF DESCRIPTION OF THE DRAWINGS

Throughout the drawings, reference numbers are re-used to indicatecorrespondence between referenced elements. The drawings are provided toillustrate embodiments of the subject matter described herein and not tolimit the scope thereof.

FIG. 1A illustrates an embodiment of a networked computing environmentthat can implement one or more embodiments of a dynamic difficultyadjustment system.

FIG. 1B illustrates an embodiment of a model generation system of FIG.1A.

FIG. 1C illustrates an embodiment of a retention analysis system of FIG.1A.

FIG. 2 presents a flowchart of an embodiment of a machine learningprocess.

FIG. 3 presents a flowchart of an embodiment of a difficulty based seedselection process.

FIG. 4 presents a flowchart of an embodiment of a cluster creationprocess.

FIG. 5 presents a flowchart of an embodiment of a cluster assignmentprocess for a user.

FIG. 6 presents a flowchart of an embodiment of a difficulty settingprocess for an application.

FIG. 7 presents a flowchart of an embodiment of a seed evaluationprocess.

FIG. 8 illustrates an embodiment of a user computing system.

FIG. 9 illustrates an embodiment of a hardware configuration for theuser computing system of FIG. 8.

DETAILED DESCRIPTION OF EMBODIMENTS Introduction

It is generally desirable for a video game to appeal to a large numberof users. However, different users have different levels of skill and/orabilities when it comes to playing video games or video games of aparticular genre or type. Further, different users have differentdesires with respect to how challenging a video game is to play. Forexample, some users prefer video games that are relatively challenging.These types of users may tend to be more engaged by a video game thatmay require a lot of practice to master and typically may not mindrepeating the same portion of the video game numerous times before beingsuccessful. In contrast, some users prefer video games that arerelatively easy. These types of users may tend to be more engaged by avideo game where obstacles are easily overcome and the users rarely arerequired to repeat a portion of the video game to be successful.

One solution to the above challenges is for video game developers toincorporate multiple static difficulty levels within a particular videogame. However, there are generally a limited number of difficulty levelsthat a developer can add due, for example, to storage constraints,development time constraints, and the challenge of predicting a largenumber of difficulty levels for a large number of user preferences.Further, these difficulty levels are generally coarse because, forexample, the difficulty levels are typically created by adjusting adefined set of adjustable elements (which may sometimes be referred toas “knobs” herein). Thus, because a particular user may find aparticular aspect of a video game challenging, but another aspect of thevideo game not challenging, selecting a static difficulty level mayresult in an inconsistent challenge throughout the video game for theparticular user. Moreover, this problem of static difficulty levels isexacerbated by the fact that another user may find different aspects ofthe video game challenging or easy.

Another solution that may be used in some types of competitive videogames, such as racing games, is to vary the ability of the user or theuser's competitor based on the relationship between the user and theuser's competitor. For example, supposing that the video game is aracing game, the user's car may be made faster when the user is doingpoorly and may be made slower when the user is doing well. This solutionmay result in what is sometimes referred to as a “rubber band effect.”This solution is often noticeable by the user because the user's vehiclewill behave inconsistently based on the location of the vehicle withrespect to the user's competitor. As a result, instead of appealing to auser, the user may be driven away. Further, this solution can bechallenging to implement with some types of video games that do notmeasure a user against a specific competitor.

Embodiments presented herein include a system and method for performingdynamic difficulty adjustment. Further, embodiments disclosed hereinperform dynamic difficulty adjustment using processes that are notdetectable or are more difficult to detect by users compared to staticand/or existing difficulty adjustment processes. In some embodiments,historical user information is fed into a machine learning system togenerate a prediction model that predicts an expected duration of gameplay, such as for example, an expected churn rate, a retention rate, thelength of time a user is expected to play the game, or an indication ofthe user's expected game play time relative to a historical set of userswho have previously played the game. Before or during game play, theprediction model is applied to information about the user to predict theuser's expected duration of game play. Based on the expected duration,the system may then utilize a mapping data repository to determine howto dynamically adjust the difficulty of the game, such as, for example,changing the values of one or more knobs to make portions of the gameless difficult.

In certain embodiments, systems disclosed herein monitor user activitywith respect to one or more video games to determine a user'spreferences regarding game difficulty and the user's skill level withrespect to playing the video games. This information may be determinedbased at least in part on factors that are associated with a user'sengagement level. For example, a user who plays a video game for anabove average length of time and who spends money while playing thevideo game may have a higher level of engagement than a user who plays avideo game for a short period of time. As another example, a user whoplays a video game for a short period of time, but who plays an aboveaverage number of play sessions may be associated with a high level ofengagement, but may be classified differently than the user of theprevious example.

Further, in certain embodiments described herein, users may be groupedwith other users who have similar preferences into clusters. The usersmay be grouped based on user behavior with respect to challenges orobstacles presented in the video game. Each of the groups or clusters ofusers may be associated with difficulty preferences or settings for oneor more video games. Using this information, one or more aspects of thevideo game can be dynamically adjusted to present a user of the videogame with a particular difficulty level that is most likely to engagethe user, or more likely to engage the user than a static set ofdifficulty levels. As noted above and further herein, additional oralternative embodiments described herein may determine one or more seedsor knob values for adjusting the difficulty of the video game by usingone or more parameter functions or prediction models. In some cases, theprediction models may be combined with clustering. In other embodiments,the prediction models may be used instead of clustering. It should beunderstood that clustering is one method that may be used withembodiments of the present disclosure. However, the present disclosureis not limited to the use of clustering and certain embodimentspresented herein may omit the user of clustering. For example, certainembodiments disclosed herein may use a regression model to fithistorical user data without the use of clustering. After obtaining aninitial version of the regression model, it can be applied to additionalplayers to facilitate the dynamic difficulty analysis and/or adjustment.

Moreover, in certain embodiments described herein, the user's activitywith respect to the video game can be monitored or reviewed to determinethe user's behavior with respect to the video game. This monitoring mayoccur substantially in real-time, or at some period of time after theuser has completed a play session. The play session may be a period oftime when the user plays the video game and/or a particular attempt toplay the game that ends with the user completing or failing to completethe video game or a portion thereof. For example, one play session maybegin with the user initiating a new instance of game play and end withthe user running out of lives in the game. As another example, one playsession may begin with the user initiating the video game and endingwhen the user exist the video game.

In some cases, monitoring the user's behavior with respect to the videogame may enable a determination of the user's skill level and desiredlevel of challenge. Based at least in part on this information, thedifficulty of the video game, or portions of the video game, can beadjusted from the initial difficulty level determined based on theassociated user cluster for the user.

Advantageously, in certain embodiments, by grouping users with similarcharacteristics with respect to playing video games and by adjustingdifficulty levels based on individual user actions with respect to thevideo games, a more fine-grained management of difficulty level ispossible compared to systems that do not monitor user behavior todetermine a difficulty level. Further, although this disclosure focuseson adjusting settings of a video game that modify the difficulty levelor challenge presented by the video game, this disclosure is not limitedas such. Embodiments of the present disclosure can be used to modifyvarious aspects of game state of a video game, which may or may notaffect the difficulty level of the video game. For example, in a gamewhere weapons are randomly dropped, if it is determined that a userprefers to play a game using a particular in-game weapon, the game maybe adjusted to present the preferred weapon to the user more frequently.In some cases, such as when all weapons are evenly balanced, the type ofweapon dropped may not impact the difficulty of the video game and thus,such an adjustment may be based on user play styles or preferencesrather than difficulty level preferences. Some other non-limitingexamples of features of the video game that can be modified, which mayor may not be detectable by the user can include providing extra speedto an in-game character, improving throwing accuracy of an in-gamecharacter, improving the distance or height that the in-game charactercan jump, adjusting the responsiveness of controls, and the like. Insome cases, the adjustments may additionally or alternatively includereducing the ability of an in-game character rather than improving theability of the in-game character. For example, the in-game character maybe made faster, but have less shooting accuracy.

Further, embodiments of the systems presented herein can adjust thedifficulty level of the video game substantially in real time based atleast in part on the user's skill level and whether the user issuccessfully completing challenges within the video game. However, thepresent disclosure is not limited as such. For example, the difficultylevel of the video game may be adjusted based at least in part on userpreferences, which may or may not correspond to a user's ability. Forexample, some users may prefer to play video games at the most difficultsettings regardless of whether they are successful at completing thevideo game or objectives therein. By monitoring user actions withrespect to playing a video game, the difficulty level of the video gamecan be adjusted to match a particular user's preferences and/or skilllevel.

To simplify discussion, the present disclosure is primarily describedwith respect to a video game. However, the present disclosure is notlimited as such may be applied to other types of applications. Forexample, embodiments disclosed herein may be applied to educationalapplications or other applications that may be modified based on ahistory of user interactivity with the application. Further, the presentdisclosure is not limited with respect to the type of video game. Theuse of the term “video game” herein includes all types of games,including, but not limited to web-based games, console games, personalcomputer (PC) games, computer games, games for mobile devices (forexample, smartphones, portable consoles, gaming machines, or wearabledevices, such as virtual reality glasses, augmented reality glasses, orsmart watches), or virtual reality games, as well as other types ofgames.

Example Networked Computing Environment

FIG. 1A illustrates an embodiment of a networked computing environment100 that can implement one or more embodiments of a dynamic difficultyadjustment system. The networked computing environment 100 includes auser computing system 110 that can communicate with an interactivecomputing system 130 via a network 104. Further, the networked computingenvironment 100 may include a number of additional user computingsystems 102. At least some of the user computing systems 102 may beconfigured the same as or similarly to the user computing system 110.

User computing system 110 may include or host a video game 112. In somecases, the video game 112 may execute entirely on the user computingsystem 110. In other cases, the video game 112 may execute at leastpartially on the user computing system 110 and at least partially on theinteractive computing system 130. In some cases, the video game 112 mayexecute entirely on the interactive computing system 130, but a user mayinteract with the video game 112 via the user computing system 110. Forexample, the game may be a massively multiplayer online role-playinggame (MMORPG) that includes a client portion executed by the usercomputing system 110 and a server portion executed by one or moreapplication host systems (not shown) that may be included as part of theinteractive computing system 130. As another example, the video game 112may be an adventure game played on the user computing system 110 withoutinteracting with the interactive computing system 130.

The video game 112 may include a number of knobs 114 that modify oraffect the state of the video game 112. Typically, the knobs 114 arevariables that affect the execution or operation of the video game 112.In some cases, the knobs 114 are state variables that directly modifythe execution of the video game 112. In other cases, the knobs 114 areseeds or seed variables that may alter the probability of an occurrencewithin the video game 112 or a random (or pseudorandom) configuration orevent within the video game 112. For example, one seed may correspond toand impact the generation of a level layout in the video game 112. Asanother example, one seed may correspond to and impact the number ofoccurrences of item drops or the types of items dropped as a user playsthe video game 112. In some cases, the seed value is a value thatinitializes or influences a random or pseudorandom number generator. Insome such cases, the random number generated based on the seed value maybe utilized by one or more functions of the video game 112 to influencethe operation of the video game 112. In some cases, the seed variablesmay be referred to as levers, and the seed variables are non-limitingexamples of various types of knobs. It should be understood that theknobs 114, sometimes referred to as levers, are not limited to seeds,but can include any type of variable that may modify execution of thevideo game 112. The system may modify execution of the video game byadjusting any type of knob or lever that can change the video game 112and may conduct a knob-level analysis of the churn rate. The system isnot limited to adjusting the knob or lever based on a seed value.

Generally, the knobs 114 are variables that relate to a difficulty levelof the video game 112. It should be understood that the knobs 114typically include a subset of variables that modify the operation ofvideo game 112 and that the video game 112 may include other variablesnot involved in the setting of the difficulty level of video game 112and/or not available for modification. Further, the knobs 114 mayinclude variables that modify the video game 112 in a manner that is notperceivable by a user or is difficult to perceive by the user. In somecases, whether or not the modification to the video game 112 isperceivable by the user may depend on the specific video game. Forexample, suppose that one knob 114 relates to the amount of life that anenemy in the video game 112 has. In some cases, modifying the valueassigned to the knob 114 may be detectable by a user because, forexample, the health of the enemy is numerically presented to the user.In such cases, the health of the enemy may remain unmodified in thedifficulty level of video game 112, but the difficulty level of thevideo game 112 may be modified via a different knob 114. However, insome cases, modifying the health of the enemy may not be detectable bythe user because, for example, the health of the enemy is not presentedto the user and the amount of hits required to defeat the enemy varieswithin a range making it difficult for the user to determine that thehealth of the enemy may have been modified from one encounter with theenemy compared to another encounter with the enemy (for example, fromone play through of the video game 112 compared to another play throughof the video game 112).

In some cases, the video game 112 may include a user interaction historyrepository 116. The user interaction history repository 116 may storedata or information relating to the user's interaction with the videogame 112. This user interaction information or data may include any typeof information that can be used to determine a user's level ofengagement with the video game 112 and/or how difficult the video game112 is for the user. For example, some non-limiting examples of the userinteraction information may include information relating to actionstaken by the user within the video game 112; a measure of the user'sprogress within the video game 112; whether the user was successful atperforming specific actions within the video game 112 or completingparticular objectives within the video game 112; how long it took theuser to complete the particular objectives; how many attempts it tookthe user to complete the particular objectives; how much money the userspent with respect to the video game 112, which may include one or bothof the amount of money spent to obtain access to the video game 112 andthe amount of money spent with respect to the video game 112 exclusiveof money spent to obtain access to the video game 112; how frequentlythe user accesses the video game 112; how long the user plays the videogame 112; and the like. The user computing system 110 may share the userinteraction information with the interactive computing system 130 viathe network 104. In some embodiments, some or all of the userinteraction information is not stored by the video game 112, but isinstead provided to or determined by another portion of the usercomputing system 110 external to the video game 112 and/or by theinteractive computing system 130. Thus, in some embodiments, the userinteraction history repository 116 may be optional or omitted.

The user computing system 110 may include hardware and softwarecomponents for establishing communications over a communication network104. For example, the user computing system 110 may be equipped withnetworking equipment and network software applications (for example, aweb browser) that facilitate communications via a network (for example,the Internet) or an intranet. The user computing system 110 may havevaried local computing resources, such as central processing units andarchitectures, memory, mass storage, graphics processing units,communication network availability and bandwidth, and so forth. Further,the user computing system 110 may include any type of computing system.For example, the user computing system 110 may include any type ofcomputing device(s), such as desktops, laptops, video game platforms,television set-top boxes, televisions (for example, Internet TVs),network-enabled kiosks, car-console devices, computerized appliances,wearable devices (for example, smart watches and glasses with computingfunctionality), and wireless mobile devices (for example, smart phones,PDAs, tablets, or the like), to name a few. In some embodiments, theuser computing system 110 may include one or more of the embodimentsdescribed below with respect to FIG. 8 and FIG. 9.

As previously discussed, it may be desirable to maintain or increase auser's level of engagement with the video game 112. One solution formaintaining or increasing the user's level of engagement with the videogame 112 includes setting or adjusting a difficulty level of the videogame 112 based at least in part on a user's skill and a user's desiredlevel of challenge when playing the video game 112. The interactivecomputing system 130 can determine a level of difficulty for the videogame 112 for a particular user and can modify the difficulty of thevideo game 112 based on the determination. This determination, as willbe described in more detail below, of the difficulty level may be madebased at least in part on user interaction information with respect tothe video game 112 and/or other video games accessible by the user.

Interactive computing system 130 may include a number of systems orsubsystems for facilitating the determination of the difficulty levelfor the video game 112 for a particular user and the modification of thedifficulty level based on the determination. These systems or subsystemscan include a difficulty configuration system 132, a user clusteringsystem 134, a seed evaluation system 136, a user data repository 138, aretention analysis system 140, a model generation system 146, and amapping data repository 144. Each of these systems may be implemented inhardware, and software, or a combination of hardware and software.Further, each of these systems may be implemented in a single computingsystem comprising computer hardware or in one or more separate ordistributed computing systems. Moreover, while these systems are shownin FIG. 1A to be stored or executed on the interactive computing system130, it is recognized that in some embodiments, part or all of thesesystems can be stored and executed on the user computing system 110.

In some embodiments, when the user computing system 110 is connected orin communication with the interactive computing system 130 via thenetwork 104, the interactive computing system 130 may perform theprocesses described herein. However, in some cases where the usercomputing system 110 and the interactive computing system 130 are not incommunication, the user computing system 110 may perform certainprocesses described herein using recent game play of the user that maybe stored in the user interaction history repository 116.

The difficulty configuration system 132 sets or adjusts the difficultylevel of a video game 112. In some cases, the difficulty configurationsystem 132 may set or adjust the difficulty level of the video game 112by providing or adjusting values for one or more of the knobs 114, whichare then fed into or provided to the video game 112. In some cases, thedifficulty configuration system 132 sets or adjusts every available knob114 each time a setting or an adjustment of a difficulty level is made.In other cases, the difficulty configuration system 132 may set oradjust less than every available knob 114 when setting or adjusting adifficulty level of the video game 112.

In some cases, the difficulty configuration system 130 may modify thedifficulty of a portion of the video game 112 without constraint.However, in some other cases, the difficulty configuration system 132may modify the difficulty of a portion of the video came 112 within aset of constraints that may be specified by a developer, a set of rules,or that are relative to other portions of the video game 112. Forexample, in some cases, the difficulty configuration system 132 mayreduce the difficulty level of a particular portion of the video game112 to no more than a difficulty threshold specified by a proceedingportion of the video game 112. Thus, in some cases, a reduction in thedifficulty level of the particular portion of the video game 112 willnot result in the particular portion of the video game 112 becomingeasier than the proceeding portion 112. The difficulty adjustment may beturned off completely in some situations, such as during a tournament.

The model generation system 146 can use one or more machine learningalgorithms to generate one or more prediction models or parameterfunctions. One or more of these prediction models may be used todetermine an expected value or occurrence based on a set of inputs. Forexample, a prediction model can be used to determine an expected churnrate or a probability that a user will cease playing the video game 112based on one or more inputs to the prediction model, such as, forexample, historical user interaction information for a user. As anotherexample, a prediction model can be used to determine an expected amountof money spent by the user on purchasing in-game items for the videogame based on one or more inputs to the prediction model. In some cases,the prediction model may be termed a prediction model because, forexample, the output may be or may be related to a prediction of anaction or event, such as the prediction the user continues to play thevideo game 112. A number of different types of algorithms may be used bythe model generation system 146. For example, certain embodiments hereinmay use a logistical regression algorithm. However, other algorithms arepossible, such as a linear regression algorithm, a discrete choicealgorithm, or a generalized linear algorithm.

The machine learning algorithms can be configured to adaptively developand update the models over time based on new input received by the modelgeneration system 146. For example, the models can be regenerated on aperiodic basis as new user information is available to help keep thepredictions in the model more accurate as the user information evolvesover time. The model generation system 146 is described in more detailherein. After a model is generated, it can be provided to the retentionanalysis system 140.

Some non-limiting examples of machine learning algorithms that can beused to generate and update the parameter functions or prediction modelscan include supervised and non-supervised machine learning algorithms,including regression algorithms (such as, for example, Ordinary LeastSquares Regression), instance-based algorithms (such as, for example,Learning Vector Quantization), decision tree algorithms (such as, forexample, classification and regression trees), Bayesian algorithms (suchas, for example, Naive Bayes), clustering algorithms (such as, forexample, k-means clustering), association rule learning algorithms (suchas, for example, Apriori algorithms), artificial neural networkalgorithms (such as, for example, Perceptron), deep learning algorithms(such as, for example, Deep Boltzmann Machine), dimensionality reductionalgorithms (such as, for example, Principal Component Analysis),ensemble algorithms (such as, for example, Stacked Generalization),and/or other machine learning algorithms.

The retention analysis system 140 can include one or more systems fordetermining a predicted churn or retention rate for a user based on theapplication of user interaction data for the user to a prediction modelgenerated by the model generation system 140. In some cases, thedifficulty configuration system 132 may use the predicted retention ratedetermined by the retention analysis system 140 to determine anadjustment to the difficulty of the video game 112. In some embodimentsthe adjustments to the difficulty are determined using data in a mappingdata repository 144 to determine which features of the game to changeand how to change the features.

The mapping data repository 144 can include one or more mappings betweenthe output of a prediction model and a difficulty level of the videogame 112, which may be used by, for example, the difficultyconfiguration system 132 to determine how to modify the video game 112to adjust the difficulty of the video game 112. For example, if theuser's predicted level of churn is “high,” then the mapping datarepository 144 may include a mapping between “high” and data to adjustthe game to be “easy” such that one or more knobs or seeds associatedwith the game are set to values that make the game easier to play. Asanother example, if the user's predicted level of churn is 65%, then themapping data repository 144 may include a mapping between “60-70%” toadjust a specific subset of the one or more knobs or seeds associatedwith the game to sets of values that make the game less difficult toplay, but not the easiest to play. Alternatively, or in addition, themapping may be between the output of the parameter function and one ormore values for one or more knobs or seeds that can be used to modifythe difficulty of the video game 112.

Further, generation and application of the parameter functions and theiruse in adjusting the difficulty level of the video game 112 will bedescribed in further detail below with respect to the retention analysissystem 140. In certain embodiments, the difficulty configuration system132 may be or may include the model generation system 146. Moreover, insome cases, the difficulty configuration system 132 may be or mayinclude the retention analysis system 140. As stated above, onenon-limiting example of a machine learning algorithm that can be usedherein is a clustering algorithm. The user clustering system 134 mayfacilitate execution of the clustering algorithm. The user clusteringsystem 134 groups or divides a set of users into groups based at leastin part on each user's skill level with respect to the video game 112 orother video games accessed by the users. Alternatively, or in addition,the user clustering system 134 may group or cluster the users based onone or more criteria associated with one or more of the users thatimpacts the users' engagement level with the video game 112 or othervideo games accessed by the users. Furthermore, the user clusteringsystem 134 may identify or determine a set of difficulty preferences toassociate with each user cluster identified or generated by the userclustering system 134.

The seed evaluation system 136, which may also be referred to as a leverevaluation system, evaluates a difficulty or a challenge provided by thevideo game 112 in response to a seed value. For example, the seedevaluation system 136 can determine how challenging a particular levelor portion of the video game (such as a dungeon) generated in responseto a particular seed value in a video game 112 is based on how well agroup of users do playing the video game 112 when the particular seedvalue is utilized. Advantageously, in certain embodiments, by evaluatingthe challenge provided by a particular seed value, the difficulty levelof the video game 112 can be refined by adding or removing the seedvalue to a set of available seed values for a particular difficultylevel. For example, if it is determined that a seed value causes usersto fail at an 80% rate, the seed value may be associated with the harderdifficulty level than another seed value that causes users to fail at a20% rate.

The user data repository 138 can store user interaction informationassociated with one or more users' interaction with the video game 112and/or one or more other video games. This user interaction informationcan be obtained over one or more play sessions of the video game 112.Further, the user data repository 138 can store user cluster informationassociated with one or more user clusters generated by the userclustering system 134. In some cases, at least some of the data storedin the user data repository 128 may be stored at a repository of theuser computing system 110. Each of the repositories described herein mayinclude non-volatile memory or a combination of volatile and nonvolatilememory.

The network 104 can include any type of communication network. Forexample, the network 104 can include one or more of a wide area network(WAN), a local area network (LAN), a cellular network, an ad hocnetwork, a satellite network, a wired network, a wireless network, andso forth. Further, in some cases, the network 104 can include theInternet.

Example Model Generation System

FIG. 1B illustrates an embodiment of the model generation system 146 ofFIG. 1A. The model generation system 146 may be used to determine one ormore prediction models 160 based on historical data 152 for a number ofusers. Typically, although not necessarily, the historical data 152includes data associated with a large number of users, such as hundreds,thousands, hundreds of thousands, or more users. However, the presentdisclosure is not limited as such, and the number of users may includeany number of users. Further, the historical data 152 can include datareceived from one or more data sources, such as, for example, anapplication host system (not shown) and/or one or more user computingsystems 102. Further, the historical data 152 can include data fromdifferent data sources, different data types, and any data generated byone or more user's interaction with the video game 112. In someembodiments, the historical data 152 may include a very large number ofdata points, such as millions of data points, which may be aggregatedinto one or more data sets. In some cases, the historical data 152 maybe accessed from a user data repository 138. In some embodiments, thehistorical data 152 is limited to historical information about the videogame, but in other embodiments, the historical data 152 may includeinformation from one or more other video games. Further, in someembodiments, one or more subsets of the historical data a limited by adate restriction, such as for example, limited to include only data fromthe last 6 months.

The model generation system 146 may, in some cases, also receivefeedback data 154. This data may be received as part of a supervisedmodel generation process that enables a user, such as an administrator,to provide additional input to the model generation system 146 that maybe used to facilitate generation of the prediction model 160. Forexample, if an anomaly exists in the historical data 152, the user maytag the anomalous data enabling the model generation system 146 tohandle the tagged data differently, such as applying a different weightto the data or excluding the data from the model generation process.

Further, the model generation system 146 may receive control data 156.This control data 156 may identify one or more features orcharacteristics for which the model generation system 146 is todetermine a model. Further, in some cases, the control data 156 mayindicate a value for the one or more features identified in the controldata 156. For example, suppose the control data 156 indicates that aprediction model is to be generated using the historical data 152 todetermine a length of time that the users played the video game 112. Ifthe amount of time each user played the game is known, this data may beprovided as part of the control data 156, or as part of the historicaldata 152. As another example, if the prediction model is to be generatedto estimate a retention rate as determined, for example, based onwhether the users played the video game 112 for a threshold period oftime or continue to play the video game 112 after a particular thresholdperiod of time, the control data 156 may include the retention rate forthe users whose data is included in the historical data 152.

The model generation system 146 may generally include a model generationrule set 170 for generation of the prediction model 160. The rule set170 may include one or more parameters 162. Each set of parameters 162may be combined using one or more mathematical functions to obtain aparameter function. Further, one or more specific parameters may beweighted by the weights 164. In some cases, the parameter function maybe obtained by combining a set of parameters with a respective set ofweights 164. The prediction model 160 and/or the respective parameters162 of the prediction models 160 may be derived during a trainingprocess based on particular input data, such as the historical data 152,feedback data 154, and control data 156, and defined output criteria,which may be included with the control data 156, used for trainingpurposes. The model generation rule set 170 can define the specificmachine learning rules and/or algorithms the model generation system 146uses to generate the model based on a defined objective function, suchas determining a churn rate. In some embodiments, initial parameters 162and weights 164 can be manually provided during the initiation of themodel generation process. The parameters 162 and weights 164 can beupdated and modified during the model generation phase to generate theprediction model 160.

The model generation system 146 can filter and categorize the historicaldata sets according to various characteristics and parameters of thedata. For example, the data can be categorized by the data source (suchas, for example, game application data, host application data, or userprofile data), information type (such as, for example, gameplayinformation, transaction information, interaction information, gameaccount information), or other categories associated with the data. Themodel generation system 146 can filter the information to identify theinformation for further processing. In some embodiments, the modelgeneration system 146 is configured to filter and separate thehistorical data 152 into a plurality of data types or categories beforefurther processing. Moreover, in some cases, some of the historical data152 may be filtered out or removed from the historical data 152 based onthe data being associated with a relevance that does not satisfy athreshold relevance as determined by the model generation system 146.

Optionally, one or more of the prediction models 160 may be associatedwith a penalty 166. These penalties 166 may be used to facilitate thegeneration of or selection of a particular prediction model 160 based onone or more factors that are used to derive the penalty. For example,the mathematical complexity or the number of parameters included in aparticular prediction model 160 may be used to generate a penalty forthe particular prediction model 160, which may impact the generation ofthe model and/or a selection algorithm or a selection probability thatthe particular prediction model 160 is selected.

After the prediction model 160 has been generated, the model can be usedduring runtime of the retention analysis system 140 and/or thedifficulty configuration system 132 to adjust the difficulty of thevideo game 112. In some cases, the adjustment of the difficulty may bedynamic and may occur during a user's interaction with the video game112. Further, in some cases, the difficulty adjustment may occur inreal-time or near real-time.

Example Retention Analysis System

FIG. 1C illustrates an embodiment of a retention analysis system 140 ofFIG. 1A. The retention analysis system 140 can apply or use one or moreof the prediction models 160 generated by the model generation system146. Although illustrated as a separate system, in some cases, theretention analysis system 140 may be included as part of the difficultyconfiguration system 132. The retention analysis system 140 may use oneor more prediction models 160A, 160B, 160N (which may be referred tocollectively as “prediction models 160” or in the singular as“prediction model 160”) to process the input data 172 to obtain theoutput data 174.

The retention analysis system 140 may apply the prediction model(s) 160during game play. In some embodiments, the prediction models 160 areapplied at the beginning of the game to determine how to adjust thedifficulty of the entire game. In other embodiments, the predictionmodels 160 are applied at different times during the game and/or atdifferent stages in the game. During determination of a difficulty levelfor one or more portions of the video game 112, the retention analysissystem 140 receives input data 172 that can be applied to one or more ofthe prediction models 160. The input data 172 can include one or morepieces of data associated with a user who is playing the video game 112.This data may include user interaction data for the video game 112,profile data for the user, and any other data that may be applied to theprediction model 160 to determine a retention or churn rate for theuser. In some embodiments, the input data 172 can be filtered before itis provided to the retention analysis system 140.

In some embodiments, a single prediction model 160 may exist for theretention analysis system 140. However, as illustrated, it is possiblefor the retention analysis system 140 to include multiple predictionmodels 160. The retention analysis system 140 can determine whichdetection model, such as any of models 160A-N, to use based on inputdata 172 and/or additional identifiers associated with the input data172. Additionally, the prediction model 160 selected may be selectedbased on the specific data provided as input data 172. The availabilityof particular types of data as part of the input data 172 can affect theselection of the prediction model 160. For example, the inclusion ofdemographic data (for example, age, gender, first language) as part ofthe input data may result in the use of prediction model 160A. However,if demographic data is not available for a particular user, thenprediction model 1608 may be used instead.

As mentioned above, one or more of the prediction models 160 may havebeen generated with or may be associated with a penalty 166. The penaltymay be used to impact the generation of the model or the selection of aprediction model for use by the retention analysis system 140.

The output data 174 can be a retention rate or churn rate associatedwith a prediction that a user ceases to play the video game 112. Forexample, in some embodiments, the retention rate may be between 0 and100 indicating the predicted percentage of users associated with similaror the same data as included as input data 172 who would cease to playthe video game 112 within a threshold time period. In some cases, theoutput data 174 may also identify a reason for the retention rate. Forexample, the retention analysis system 140 may indicate that the 90%retention rate for a particular user is based at least in part on theamount of money spent while playing the video game 112. However, theretention analysis system 140 may indicate that the 90% retention ratefor another user may be based at least in part on the below freezingtemperature in the geographic region where the user is located. Asanother example, the retention analysis system 140 may indicate that the20% retention rate for a user may be based at least in part on the below25% win ratio.

The prediction models 160A, 160B, 160N may generally include a set ofone or more parameters 162A, 162B, 162N, respectively (which may bereferred to collectively as “parameters 162”). Each set of parameters162 (such as parameters 162A) may be combined using one or moremathematical functions to obtain a parameter function. Further, one ormore specific parameters from the parameters 162A, 162B, 162N may beweighted by the weights 164A, 164B, 164N (which may be referred tocollectively as “weights 164”). In some cases, the parameter functionmay be obtained by combining a set of parameters (such as the parameters162A) with a respective set of weights 164 (such as the weights 164A).Optionally, one or more of the prediction models 160A, 160B, 160N may beassociated with a penalty 166A, 1668, 166N, respectively (which may bereferred to collectively as “penalties 166”).

Example Machine Learning Process

FIG. 2 presents a flowchart of an embodiment of a machine learningprocess 200. The process 200 can be implemented by any system that cangenerate one or more parameter functions or prediction models thatinclude one or more parameters. In some cases, the process 200 serves asa training process for developing one or more parameter functions orprediction models based on historical data or other known data. Theprocess 200, in whole or in part, can be implemented by, for example, aninteractive computing system 130, a difficulty configuration system 132,a user clustering system 134, a retention analysis system 140, a modelgeneration system 146, or a user computing system 110, among others.Although any number of systems, in whole or in part, can implement theprocess 200, to simplify discussion, the process 200 will be describedwith respect to particular systems. Further, it should be understoodthat the process 200 may be updated or performed repeatedly over time.For example, the process 200 may be repeated once per month, with theaddition or release of a new video game, or with the addition of athreshold number of new users available for analysis or playing a videogame 112. However, the process 200 may be performed more or lessfrequently.

The process 200 begins at block 202 where the model generation system146 receives historical data 152 comprising user interaction data for anumber of users of the video game 112. This historical data 152 mayserve as training data for the model generation system 146 and mayinclude user demographics or characteristics, such as age, geographiclocation, gender, or socioeconomic class. Alternatively, or in addition,the historical data 152 may include information relating to a play styleof one or more users; the amount of money spent playing the video game112; user success or failure information with respect to the video game112 (for example, a user win ratio); a play frequency of playing thevideo game 112; a frequency of using particular optional game elements(for example, available boosts, level skips, in-game hints, power ups,and the like); the amount of real money (for example, U.S. dollars orEuropean euros) spent purchasing in-game items for the video game 112;and the like. Further, in some cases, the historical data 152 mayinclude data related to the video game 112, such as one or more seedvalues used by users who played the video game 112. Additional examplesof data related to the video game 112 that may be received as part ofthe historical data 152 may include settings for one or more knobs orstate variables of the video game 112, the identity of one or moredifficulty levels for the video game 112 used by the users, the type ofthe video game 112, and the like.

At block 204, the model generation system 146 receives control data 156indicating a desired prediction for the number of users corresponding tothe historical data. This control data 156 may indicate one or morefeatures or characteristics for which the model generation system 146 isto determine a model. Alternatively, or in addition, the control data156 may include a value for the features or characteristics that areassociated with the received historical data 152. For example, thecontrol data 156 may identify churn rate, or retention rate, as thedesired feature to be predicted by the model that is to be generated bythe model generation system 146. The churn rate or retention rate maycorrespond to a percentage of users associated with the historical data152 that ceased playing the video game 112. Further, the control data156 may identify a retention rate associated with the historical data.For example, the control data 156 may indicate that the retention rateis 60% for certain of the users whose data is included in the historicaldata 152. In some embodiments, the control data 156 may include multiplecharacteristics or features to be predicted by the model to be generatedby the model generation system 146. For example, the control data 156may identify both a retention rate and a reason for the retention rate(such as the difficulty of the video game 112 being too low or too highfor the users whose data was provided as part of the historical data 152at block 202), or a retention rate and an average monetary amount spentby the users whose data was provided as the historical data 152.

At block 206, the model generation system 146 generates one or moreprediction models 160 based on the historical data 152 and the controldata 156. The prediction models 160 may include one or more variables orparameters 162 that can be combined using a mathematical algorithm ormodel generation ruleset 170 to generate a prediction model 160 based onthe historical data 152 and, in some cases, the control data 156.Further, in certain embodiments, the block 206 may include applying oneor more feedback data 154. For example, if the prediction model 160 isgenerated as part of a supervised machine learning process, a user (forexample, an administrator) may provide one or more inputs to the modelgeneration system 146 as the prediction model 160 is being generatedand/or to refine the prediction model 160 generation process. Forexample, the user may be aware that a particular region or geographicarea had a power outage. In such a case, the user may supply feedbackdata 154 to reduce the weight of a portion of the historical data 152that may correspond to users from the affected geographic region duringthe power outage. Further, in some cases, one or more of the variablesor parameters may be weighted using, for example, weights 164. The valueof the weight for a variable may be based at least in part on the impactthe variable has in generating the prediction model 160 that satisfies,or satisfies within a threshold discrepancy, the control data 156 and/orthe historical data 152. In some cases, the combination of the variablesand weights may be used to generate a prediction model 160.

Optionally, at block 208, the model generation system 146 applies apenalty to or associates a penalty 166 with at least some of the one ormore prediction models 160 generated at block 206. The penaltyassociated with each of the one or more prediction models 160 maydiffer. Further, the penalty for each of the prediction models 160 maybe based at least in part on the model type of the prediction model 160and/or the mathematical algorithm used to combine the parameters 162 ofthe prediction model 160, and the number of parameters included in theparameter function. For example, when generating a prediction model 160,a penalty may be applied that disfavors a very large number of variablesor a greater amount of processing power to apply the model. As anotherexample, a prediction model 160 that uses more parameters or variablesthan another prediction model may be associated with a greater penalty166 than the prediction model that uses fewer variables. As a furtherexample, a prediction model that uses a model type or a mathematicalalgorithm that requires a greater amount of processing power tocalculate than another prediction model may be associated with a greaterpenalty than the prediction model that uses a model type or amathematical algorithm that requires a lower amount of processing powerto calculate.

The model generation system 146, at block 210, based at least in part onan accuracy of the prediction model 160 and any associated penalty, andselects a prediction model 160. In some embodiments, the modelgeneration system 146 selects a prediction model 160 associated with alower penalty compared to another prediction model 160. However, in someembodiments, the model generation system 146 may select a predictionmodel associated with a higher penalty if, for example, the output ofthe prediction model 160 is a threshold degree more accurate than theprediction model associated with the lower penalty. In certainembodiments, the block 210 may be optional or omitted. For example, insome cases, the prediction models 160 may not be associated with apenalty. In some such cases, a prediction model may be selected from aplurality of prediction models based on the accuracy of the outputgenerated by the prediction model.

Example Difficulty Based Seed Selection Process

FIG. 3 presents a flowchart of an embodiment of a difficulty based seedselection process 300. The process 300 can be implemented by any systemthat can select a seed value for adjusting a difficulty of a video gamebased at least in part on the output of a prediction function or aparameter function. The process 300, in whole or in part, can beimplemented by, for example, an interactive computing system 130, adifficulty configuration system 132, a user clustering system 134, amodel generation system 146, a retention analysis system 140, or a usercomputing system 110, among others. Although any number of systems, inwhole or in part, can implement the process 300, to simplify discussion,the process 300 will be described with respect to particular systems.Further, it should be understood that the process 300 may be updated orperformed repeatedly over time. For example, the process 300 may berepeated for each play session of a video game 112, for each round ofthe video game 112, each week, each month, for every threshold number ofplay sessions, for every threshold number of times a user loses or failsto complete an objective, each time a win ratio drops below a thresholdlevel, and the like. However, the process 300 may be performed more orless frequently.

The process 300 begins at block 302 where the retention analysis system140 receives a set of input data (such as the input data 172) comprisinguser interaction data for a user of the video game 112. This input data172 is typically, although not necessarily, user specific data. Further,the set of input data 172 may include both historical user interactiondata and recent user interaction data for the user. Historical userinteraction data may include user interaction data from a noncurrentplay session and/or user interaction data that satisfies a threshold ageor that is older than a particular threshold time period. For example,the historical user interaction data may include user interaction datathat is at least a week or a month old. Alternatively, or in addition,the historical user interaction data may include data from play sessionsthat are more than 5 or 10 play sessions old.

Conversely, the recent user interaction data may include userinteraction data that satisfies a threshold age or that is more recentthan a particular threshold time period. For example, the recent userinteraction data may include user interaction data that is less than aweek or a month old. Alternatively, or in addition, the recent userinteraction data may include data from play sessions that are less than3, 5, or 10 play sessions old.

In some embodiments, the historical user data and the recent user datamay be weighted differently within the prediction model 160. In somecases, each parameter 162 within the prediction model 160 may berepeated. For example, one version of the parameter may be based on thehistorical user data and may be associated with one weight 164 andanother version of the parameter may be based on the recent user dataand may be associated with a different weight 164. Moreover, in someimplementations, the weight may be applied on a sliding scale or agraduated basis. For example, more recent historical user data may beassociated with a higher weight 164 and less recent historical userdata.

At block 304, the retention analysis system 140, using a parameterfunction or a prediction model 160, may determine a predicted churn ratefor the user based at least in part on the set of input data 172received at block 302. The predicted churn rate for the user may bedetermined at the beginning of game play, and/or at various stages or atvarious time frames during game play. The determined or calculatedoutput 174 of the prediction model 160 may be a predicted churn rate oran expected churn for users with the same or substantially similar inputdata as the set of input data received at block 302. Further, the churnrate may indicate the percentage of users or the likelihood that a userwill continue to play or not continue to play the video game 112 basedon the set of input data received at block 302. For example, if a churnrate of 75% is output by the retention analysis system 140, then it maybe estimated that there is a 75% chance that the user will not continueto play the video game 112. Alternatively, or in addition, the churnrate of 75% may indicate that 75% of users with the same or similar userinteraction data that is associated with the set of input data receivedat the block 302 will cease playing the video game 112 generally, aftera certain amount of time, or at a specific point in the game. In someembodiments, the prediction model 160 may predict the amount of time theuser is predicted to play the video game 112 over a particular timeperiod or until ceasing to play the video game 112. This determinationmay be for a particular play session or for a number of play sessionsand may be instead of or in addition to determining the retention rate.

Optionally, at block 306, using the prediction model 160, the retentionanalysis system 140 determines a predicted reason for the predictedchurn rate for the user based on the set of input data 172. For example,the parameter function may determine based on an input data indicating awin ratio below a threshold that the churn rate calculated by theparameter function is based at least in part on the difficulty of thevideo game 112.

At block 308, based on the predicted churn rate for the user determinedat block 304, the difficulty configuration system 132 selects a seedassociated with a particular level of difficulty for a portion of thevideo game. Selecting the seed may include accessing mapping data at themapping data repository 144. This mapping data may indicate a mappingbetween one or more churn rates and one or more difficulty levels forthe video game 112. In some cases, the churn rate above a particularthreshold level may be mapped to one or more seed values that may reducethe difficulty of the video game 112. Further, in some cases, a churnrate may be mapped to different sets of seed values associated withdifferent difficulty levels. In such cases, the set of seed valuesassociated with a particular difficulty level may be selected based onan additional output 174 of the retention analysis system 140. Forexample, the retention analysis system 140 may output a churn rate and areason for the churn rate for a particular user. Such an example, achurn rate above a particular threshold may cause a new seed value to beselected. Further, the reason for the churn rate may be used to select aplurality of seed values associated with different difficulty levels.The reason for the churn rate may be associated with particular numericvalues. For example, a churn rate above a particular threshold caused bythe video game 112 being too easy may be associated with one numericvalue in a churn rate above a particular threshold caused by the videogame 112 being too hard may be associated with another numeric value.

In some embodiments, the retention analysis system 140 may output theone or more factors or data from the input data 172 that had the mostimpact or a threshold amount of impact in determining the retention ratefor the user. Using this information, the difficulty configurationsystem 132 may identify one or more changes to state variables of thevideo game 112, or one or more seed values, that correspond to thefactors used to generate the retention rate.

In some cases, the mapping between the output from the retentionanalysis system 140 and the seed values may be a multistage mapping. Forexample, a first mapping may be between the churn rate output by theretention analysis system 140 and a plurality of seed values, and asecond mapping may be between another output of the retention analysissystem 140 (such as a predicted reason for the churn rate) and aparticular seed value or subset of seed values from the plurality ofseed values. In another implementation, the multistage mapping mayinclude a first stage mapping between the churn rate and a particulardifficulty level, and a second stage mapping between the particulardifficulty level and one or more seed values or knob values.

In some cases, the seeds are adjustments to knobs were state variablesused to modify execution of the video game 112. In other cases, theseeds are values used in random or pseudorandom number generators thatare used to modify the probability or the occurrence rate of one or moreevents within the video game 112. Further, in some cases, the seeds arevalues used to affect the generation of a level or a portion of thevideo game 112 and/or the location of a user playable character withinthe video game 112.

In some cases, one or more of the above embodiments may be combined withclustering to facilitate identifying users who may prefer to play videogames that are more or less difficult. Some example embodiments ofclustering the may be used with the present disclosure are described inmore detail below.

Example Clustering Embodiments

In some embodiments, a clustering process may be used to group users whoshare one or more characteristics that may be used to identifydifficulty preferences for a video game 112. Clusters may include one ormore users that share one or more characteristics. Difficultypreferences can be associated with each cluster to facilitate adjustingthe difficult of the video game 112. A user whose characteristics matcha particular cluster, may be assigned to the particular cluster. Adifficulty level of the video game 112 can be adjusted for the userbased on difficulty preferences associated with the cluster. Certainnon-limiting example processes are described below that enable difficultadjustment using clustering.

Example Cluster Creation Process

FIG. 4 presents a flowchart of an embodiment of a cluster creationprocess 400. The process 400 can be implemented by any system that cancreate a plurality of clusters or groups of users based on each user'sinteraction with a video game and the level of engagement associatedwith each user. For example, the process 400, in whole or in part, canbe implemented by an interactive computing system 130, a difficultyconfiguration system 132, a user clustering system 134, or a usercomputing system 110, among others. Although any number of systems, inwhole or in part, can implement the process 400, to simplify discussion,the process 400 will be described with respect to particular systems.Further, it should be understood that the process 400 may be updated orperformed repeatedly over time. For example, the process 400 may berepeated once per month, with the addition or release of a new videogame, or with the addition of a threshold number of new users availablefor analysis or playing a video game 112. However, the process 400 maybe performed more or less frequently.

The process 400 begins at block 402 where the user clustering system 134identifies a set of users of the video game 112. To simplify discussion,the process 400 is primarily described with respect to a single videogame, such as the video game 112. However, this disclosure is notlimited as such, and the process 400 can be implemented for a pluralityof video games. In some cases, each of the plurality of video games maybe of the same genre or may share one or more characteristics in common.In other cases, the plurality of video games may be distributed across anumber of genres. The genres may be based on theme and/or game type (forexample, an open world game, a role-playing game, a first-personshooter, a side scrolling game, a simulation, a space fighter, awestern, and the like). Further, in some cases, the process 400 includesanalyzing data across additional video games to confirm or refine theclusters created based on the analysis of a video game.

At block 404, for each user identified at the block 402, the userclustering system 134 monitors the user's interaction with the videogame 112 over time to obtain user interaction data for the user. Thismonitoring can be done by reviewing sets of user interaction data forthe user from different time periods or by pulling data from the videogame 112 in real time and storing the data for later review. This userinteraction data can include any of the information previously describedwith respect to FIG. 1A. Further, the user interaction data may includedata relating to the users progress within the video game; the actiontaken by the user when the user succeeds in completing a level orobjective; the action taken by the user when the user does not succeedin completing a level or objective; differences in actions taken by theuser based on the length of time it takes the user to succeed at anobjective; the length of time the user plays the video game each time oron average when the user plays the video game; whether the usertypically plays the game for short periods of time or long periods oftime; whether the user spends real world currency (as opposed to in-gamecurrency) when playing the video game, which may be used as a factor toidentify the users level of engagement (for example, a user spends moneywhile playing a video game is more likely to play the game againcompared to a user who does not spend money or playing a video game);and any other criteria that can be used to measure the users level ofengagement with the video game and/or the user's action in response tothe level of challenge that the video game presents to the user.Further, user interaction data may also include information relating tothe type of user computing system 110 used by the user to access thevideo game; differences, if any, and how the user interacts with thevideo game based on the type of user computing system 110 used to accessthe video game; whether the user uses multiple user computing systems110 to access the video game; and the like.

At block 406, the user clustering system 134 filters out users whoseuser interaction data does not satisfy a minimum set of interactioncriteria. This minimum set of interaction criteria may be related to thelength of time that the user played the game or to whether the userplayed the video game for multiple play sessions. For example, a userwho played the video game less than a threshold amount of time or forless than a threshold number of play sessions may not have providedsufficient data to determine whether the video game's difficultyimpacted the user's level of engagement. Further, the minimum set ofinteraction criteria may be related to the type of actions the user hastaken in the video game 112 or the progress the user has made in thevideo game 112. In some cases, users whose user interaction data doesnot satisfy the minimum set of interaction criteria may be retained, butweighted lower compared to user interaction data for users that doessatisfy the minimum set of interaction criteria. In some embodiments,the block 406 may be optional or omitted.

For each remaining user from the set of users, the user clusteringsystem 134 determines a level of engagement for the user based on theuser interaction data for that user at block 408. Determining the levelof engagement for the user may include determining whether the usercontinues to play or stops playing a video game based on the user'sprogress within the video game. Further, determining the level ofengagement for the user may include determining whether and/or how muchmoney the user spends while playing the video game. In some cases,determining the level of engagement for the user may include determininga probability that the user will play the video game again based on theuser interaction data collected for the user. In some cases, determiningthe level of engagement for the user may include determining the user'sskill with respect to the video game. Further, performing the operationsassociated with the block 408 may include applying one or more machinelearning algorithms using the user interaction data as input todetermine a probability that the user continues to play or stops playingthe video game based on the amount of challenge presented to the user bythe video game.

At block 410, the user clustering system 134 determines a number of userclusters based on the user interaction data and the level of engagementfor each user of the remaining users. Determining the user clusters mayinclude grouping users based on their behavior as determined from theuser interaction data monitored at the block 404. Further, grouping theusers into the user clusters may include identifying characteristicsassociated with each user based on the user interaction data collectedfor the users that indicate a level of engagement with the video game.For example, suppose that the system determines that a number of userstypically play the video game for less than 30 minutes and tend tosucceed at an objective in less than two attempts over the course of athreshold number of play sessions and/or objectives. Further, supposethat these users typically stop playing the video game after reachingsome number of objectives that require more than two attempts tocomplete the objectives. This number of users may be clustered togetherin a user cluster for users who tend to play short game sessions andtend to prefer video games that are not challenging. In contrast,another group of players who tend to play video games for two hours at atime and continue to play the video game despite objectives takingseveral attempts to complete may be clustered together in a separateuser cluster. One or more machine learning algorithms may be used toidentify the clusters of users based at least in part on the userinteraction data for the set of users.

In some cases, block 410 may include generating subclusters within eachcluster. For example, one cluster may include users who tend to prefervideo games that are particularly challenging. Within this cluster,there may be two subclusters. One subcluster may be for users who tendto prefer video games that remain challenging throughout the course ofthe entire game. Another subcluster may be for users who tend to prefervideo games that are challenging in the beginning, but may become lesschallenging over time as may occur with video games that are difficultto master, but are less difficult once the user masters the skillsrequired by the video game.

At block 412, the difficulty configuration system 132 associatesdifficulty preferences with each user cluster based on the userinteraction data associated with the users in the user cluster. In someembodiments, a machine learning model may be generated by, for example,the model generation system 146, to determine which values fordifficulty preferences are associated with longer game play compared toother values for the difficulty preferences. The difficulty preferencesmay identify whether users associated with the user cluster prefer toplay a video game that is difficult, easy, or some gradation in between.Further, the difficulty preferences may identify one or more valuesresetting one or more knobs were game state variables associated withthe video game.

Example Cluster Assignment Process

FIG. 5 presents a flowchart of an embodiment of a cluster assignmentprocess 500 for a user. The process 500 can be implemented by any systemthat can identify a user cluster with which to associate a user based onthe user's interaction with a video game. For example, the process 500,in whole or in part, can be implemented by an interactive computingsystem 130, a difficulty configuration system 132, a user clusteringsystem 134, or a user computing system 110, among others. Although anynumber of systems, in whole or in part, can implement the process 500,to simplify discussion, the process 500 will be described with respectto particular systems. Further, it should be understood that the process500 may be updated or performed repeatedly over time. For example, theprocess 500 may be repeated once per month, after a threshold number ofplay sessions by the user since a prior performance of the process 500,or after the user plays a new video game. However, the process 500 maybe performed more or less frequently. Furthermore, the process 500 maybe performed in real time or may be performed in advance of a particularevent. For example, the process 500 may be performed upon userregistration with a game deployment system or upon the user accessingthe video game 112.

The process 500 begins at block 502 where the user clustering system 134identifies a user of the video game 112. The user may be identifiedbased on user account information, such as a user login, or based oninformation associated with an avatar of the user, such as a screenname. Alternatively, or in addition, a user may be identified based oninformation associated with a user computing system 110 of the user,such as an Internet protocol (IP) address.

At block 504, the user clustering system 134 monitors the user'sinteraction with the video game 112 over a time period to obtain userinteraction data for the user. This monitoring can be done by reviewingsets of user interaction data for the user from different time periodsor by pulling data from the video game 112 in real time and storing thedata for later review. Typically, the time period is a historical timeperiod that may include the user's interaction with the video game 112over multiple play sessions. Further, the length of the time period maybe selected to satisfy or exceed a minimum time threshold. For example,the time period may be selected to be at least, or to exceed, one month,two months, half a year, and the like. In some cases, instead of or inaddition to monitoring the user's interaction with the video game over atime period, the user clustering system 134 may be configured to monitorthe user's interaction over a threshold number of play sessions. Forexample, the user clustering system 134 may be configured to monitor thefirst number (for example, five, ten, twelve, and the like) of playsessions of the user or the most recent number of play sessions of theuser. In some cases, the block 504 may include monitoring the user'sinteraction with a plurality of video games. The plurality of videogames may be video games of the same type as the video game 112. Inother cases plurality of video games may not be limited to a particulartype of video game.

The user clustering system 134 accesses cluster definitions for a set ofclusters at block 506. Accessing the cluster definitions for the set ofclusters may include accessing a user data repository 138. The clusterdefinitions may include a set of characteristics that correlate to orare derived from user interaction data for a set of users.

Using the cluster definitions accessed at the block 506 and the userinteraction data obtained at the block 504, the user clustering system134 identifies a cluster from the set of clusters at the block 508.Identifying the cluster from the set of clusters may include matchingcharacteristics of the user interaction data with characteristicsassociated with each of the set of clusters. For example, if the userinteraction data indicates that the user plays the video game 112 forseveral hours at a time when successfully completing objectives andceases to play the video game 112 within about 10 minutes on averagewhen failing to complete an objective, then the user clustering system134 may determine that the user is a player who spends significant timeplaying video games and does not enjoy significant challenge. Continuingthis example, the user clustering system 134 may identify the usercluster from the set of clusters that is associated with players whoplay video games for a significant amount of time and tend to enjoygames with less than a threshold level of difficulty.

In some cases, the determination of the cluster from the set of clustersmay include identifying how difficult the user finds the video game 112based on the user interaction data obtained at the block 504. Further,the determination of the cluster of a set of clusters may includeidentifying the user's actions or reactions to events within the videogame including events relating to the success or failure of the user inovercoming challenges within the video game 112. Engagementcharacteristics or user interaction characteristics for the user withrespect to the video game may be determined based on the user's behaviorwith respect to the success or failure of satisfying objectives withinthe video game 112. These engagement characteristics and/or othercharacteristics related to the user that are derived from the user'sinteraction with the video game may be compared to characteristicsassociated with the set of clusters to identify a corresponding clusterto associate with the user.

In some embodiments, the engagement characteristics may be presented tothe user and, in response, the user clustering system 134 may receiveinput from the user regarding the engagement characteristics. Forexample, the user may indicate whether the user agrees with theanalysis. As another example, the user may indicate that he or she wasexperimenting with a new play style that the user does or does not planto continue using. The user clustering system 134 may use the user inputto adjust or confirm its selection of a particular user cluster. In somecases, the user input may be weighted based on the amount of data theuser clustering system 134 has obtained at block 504. For example, theuser input may be weighted more heavily for users with a little history(such as two or three play sessions) and weighted less heavily for userswith a significant amount of history (such as fifty or a hundred playsessions).

In some cases, the interactive computing system 130 may cause sliders,or some other user interface element, to be displayed to the user toindicate the user's engagement characteristics on a spectrum. Forexample, the slider may indicate that the user tends to attemptchallenges more often than average or that the user on average tends tobe more successful at certain challenges than other users. Although theanalysis of the user interaction data may be presented to the user, theuser may not be informed that the information is being used to adjustthe difficulty level of at least portions of the video game 112.

After the user has played a portion of the video game 112, the userclustering system 134 may question the user to help determine userpreferences or to obtain information regarding how the user viewed thedifficulty of the portion of the video game 112. The user may bequestioned after the user indicates that the user is ending a playsession. Thus, the user can be questioned regarding his or herexperience without interrupting the user's play experience. Further, theuser clustering system 134 may parse chat message data of the user todetermine the user's engagement level and/or how difficult the userfinds the video game 112.

At block 510, the user clustering system 134 associates the user withthe identified cluster. Associating the user with the identified clustermay include storing an association between the user and the identifiedcluster at the user data repository 138.

In some embodiments, the process 500 may be used to determine how likelya user is to stop playing the video game 112. This determination cansometimes be referred to as a “churn rate” or “churn” and can beassociated with how often a user switches video games or stops playingcertain video games. For example, a user who tends to play video gamesfor one or two play sessions and then move on to another video game mayhave a high churn rate. By identifying such users, it may be possible tomodify the difficulty settings of the video game to reduce the rate ofchurn. For example, if it is determined that simple games, or games thatdo not provide an adequate challenge for the user results in the userceasing to play such games, the user may be associated with a cluster ofusers who prefer difficult video games. Further, as is described in moredetail below, based on the identity of the cluster to associate with theuser, the difficulty of the video game 112 may be refined in an effortto reduce the probability that the user ceases to play the video game112.

Example Difficulty Setting Process

FIG. 6 presents a flowchart of an embodiment of a difficulty settingprocess 600 for an application, such as the video game 112. The process600 can be implemented by any system that can dynamically set or adjustthe difficulty of a video game based at least in part on monitoractivity of the user. For example, the process 600, in whole or in part,can be implemented by an interactive computing system 130, a difficultyconfiguration system 132, a user clustering system 134, or a usercomputing system 110, among others. Although any number of systems, inwhole or in part, can implement the process 600, to simplify discussion,the process 600 will be described with respect to particular systems.

The process 600 may be performed when the video game 112 is executed orwhen a play session of the video game 112 is started. In some cases, theprocess 600 may be performed when a user begins a new game or starts anew account with respect to video game 112. Further, the process 600 maybe performed each time the user loads a previously saved game withrespect to the video game 112. In some cases, the process 600 may beperformed, or repeated, at a particular time or in response to a triggerevent within the video game 112. For example, the process 600 may occureach time the user fails to complete or succeeds in completingparticular objectives within the video game 112. In some cases, theprocess 600 may occur after a threshold number of objectives arecompleted or after a threshold number of attempts to complete anobjective are unsuccessful.

The process 600 begins at block 602 where the difficulty configurationsystem 132 identifies a user of the video game 112. In some cases, theblock 602 is performed in response to the user accessing the video game112. However, as described above, one or more portions of the process600 may be performed in response to other events, such as in gametrigger events. Identifying the user of the video game 112 may be basedon a user identifier or avatar. In some cases, the block 602 may includeone or more of the embodiments previously described with respect to theblock 502.

At block 604, the difficulty configuration system 132 determines a usercluster associated with the user. Determining a user cluster associatedwith the user may include accessing a user data repository 138 toidentify one or more clusters associated with the user. In some cases,the user cluster may be associated with both the user and the video game112. In some such cases, the user may be associated with multiple userclusters. For example, the user may be associated with a different usercluster for each video game played by the user. In other cases, the usermay be associated with a single user cluster for a set of video games.In some cases, the set of video games may be all video games played bythe user or all video games published by an entity associated with theinteractive computing system 130. In other cases, the set of video gamesmay be video games of a specific genre or theme.

Based on the identified user cluster, the difficulty configurationsystem 132 determines configuration values for a set of one or moreknobs associated with the video game 112. These configuration values maybe identified by the user cluster. Alternatively, the configurationvalues may be determined based on a difficulty level associated with theuser cluster. In some cases, at least some of the configuration valuesare specific or fixed values associated with the user cluster ordetermined based on characteristics associated with the user cluster.Alternatively, or in addition, at least some of the configuration valuesmay be selected using an algorithm or randomly from a particular pool orset of values associated with the user cluster.

At block 608, the difficulty configuration system 132 accesses recentuser interaction data for the user with respect to the video game 112.This recent user interaction data may be provided to the difficultyconfiguration system 132 by the video game 112. Alternatively, or inaddition, the difficulty configuration system 132 may access the recentuser interaction data from the user interaction history repository 116.In yet other cases, the difficulty configuration system 132 may accessthe recent user interaction data from the user data repository 138.

The recent user interaction data may include user interaction datacollected during a current play session, within a threshold time period(for example, within the last week), or within a threshold number ofplay sessions (for example, the most recent three play sessions).Generally, although not necessarily, the time period or the number ofplay sessions from which the recent user interaction data is collectedis less and/or more recent than the historical data used with respect tothe process 500 to determine a user cluster associated with the user.

Advantageously, in certain embodiments, by accessing the user clusterassociated with the user and by accessing the recent user interactiondata, the difficulty configuration system 132 can make a prediction asto the user's success at playing the video game 112 with a particularlevel of difficulty. Further, the difficulty configuration system 132can make a prediction regarding the user's behavior with respect to thevideo game 112. Based at least in part on these predictions, thedifficulty configuration system 132 can select configuration values thatcan be sent to the video game 112 to adjust the difficulty of the videogame 112 accordingly. In some embodiments, the block 606 or the block608 may be optional or omitted. For example, in cases where the user hasnot previously played the video game 112, the block 608 may be omitted.As another example, in cases where the user has not accumulated enoughhistorical user interaction data to associate the user with a usercluster, the block 606 may be omitted. Alternatively, the user may beassociated with a default user cluster so as to determine an initial setof configuration values for the set of knobs associated with the videogame 112. As another alternative, the user may be associated with a usercluster based at least in part on information provided by the user.

At block 610, the difficulty configuration system 132 may adjust theconfiguration values for the set of knobs based at least in part on therecent user interaction data for the user. Adjusting the configurationvalues may make the video game 112 easier or more challenging for theuser. Further, adjusting the configuration values may modify the stateof the video game 112 and/or number of features associated with thevideo game 112. For example, adjusting the configuration values maymodify the layout of a level within the video game 112. As anotherexample, adjusting the configuration values may modify the timing ofitem drops within the video game 112 and/or the type of item dropswithin the video game 112. In some cases, the configuration values maybe seed values that are used by the video game 112 in generating one ormore aspects of the video game 112, such as a level layout or a startposition of a user controlled character within the video game 112. Itshould be understood that the present disclosure does not limit the typeof modifications that may be made to the video game 112. However,typically, the modifications made to the video game 112 will result inan adjustment of the level of difficulty of the video game 112.Advantageously, in certain embodiments, by adjusting particular knobswithin the video game 112 based on historical and/or recent userinteraction data, the difficulty of the video game 112 may be adjustedin a more granular basis compared to static difficulty level settingsassociated with some video games.

In some cases, adjusting the difficulty settings for the video game mayinclude changing configuration values that adjust a defined set offeatures in the video game 112. Alternatively, the difficultyconfiguration system 132 may determine configuration settings based atleast in part on an evaluation of specific skills of the user asdetermined from the recent user interaction data. For example, it may bedetermined that the user is failing a number of objectives in the videogame 112 because the user has trouble timing jumps. If the user is atype of user who will stop playing a video game 112 when the user hastrouble completing objectives, as determined by the user clusterassociated with the user, the difficult configuration system 132 maygenerate configuration values for the capabilities of the playablecharacter in the video game 112 to make it easier to time the jumps (forexample, by allowing the character to jump farther). In contrast, ifanother user does not have a problem timing jumps, but has troubleaiming a weapon, the difficulty configuration system 132 may generateconfiguration values that make it easier to shoot objectives by makingthe hit area of a weapon larger. In some cases, both of these changesmay be made without the users realizing that the game has been modified.

In some cases, the block 610 may include the difficulty configurationsystem 132 providing the video game 112 and/or the user computer system110 the adjusted configuration values for the set of knobs. Providingthe adjusted configuration values to the user computing system 110 mayinclude providing the adjusted configuration values over a communicationchannel established between the interactive computing system 130 and theuser computing system 110. In some cases, communication channel may bebetween the video game 112 and the difficulty configuration system 132.In some cases, the adjusted configuration values may be provided as aconfiguration file (for example, a markup language file, such as an XMLfile) that may be accessed by the video game 112 and/or that mayoverride a configuration file of the video game 112. In some cases, theadjuster configuration values may be provided in a shared library filesuch as a dynamic link library (DLL) file.

Although the process 600 may be used to provide configuration valuesthat adjust the difficulty setting of the video game 112, in some cases,the adjustment to the difficulty level of the video game 112 is bounded.For example, in some cases, the developer of the video game 112 maydesire for each odd level to be easier than each even level within thevideo game 112. Thus, the player will alternate between easier andharder levels while playing the video game 112. In such a case, theadjustment to the configuration values at the block 610 may berestricted such that the odd levels remain easier than the even levelswithin the video game 112. As another example, adjustments to thedifficulty level of different portions of the video game 112 may berestricted to particular range. Thus, in some cases, although laterlevels in the video game 112 may be made more or less difficult comparedto earlier levels, the later levels may still remain more difficult thanthe earlier levels.

In some embodiments, the process 600 may be performed at least in partby the user computing system 110. For example, in cases where the usercomputing system 110 does not have a network connection to theinteractive computing system 130, the video game 112 may be configuredto dynamically adjust its difficulty based at least in part on userinteraction data stored in the user interaction history repository 116.Further, in some cases, the interactive computing system 130 may provideuser cluster information to the user computing system 110 for storageenabling the user computing system 110 to perform the process 600 attimes when the user computing system 110 does not have a networkconnection to the interactive computing system 130.

Example Seed Evaluation Process

FIG. 7 presents a flowchart of an embodiment of a seed evaluationprocess 700. The process 700 can be implemented by any system that canevaluate the difficulty of a portion of the video game 112 based atleast in part on the use of a particular seed value with respect to theportion of the video game 112. For example, the process 700, in whole orin part, can be implemented by an interactive computing system 130, aseed evaluation system 136, a difficulty configuration system 132, or auser computing system 110, among others. Although any number of systems,in whole or in part, can implement the process 700, to simplifydiscussion, the process 700 will be described with respect to particularsystems.

The seed evaluated using the process 700 can relate to the generation ofa number of aspects or portions of the video game 112. For example, theseed may be used to determine an initial configuration of an in-gameworld or level. As another example, the seed may be used to determinethe abilities of one or more playable or non-playable characters withinthe video game 112.

The process 700 begins at block 702 where the seed evaluation system 136identifies a number of seeds for configuring a video game 112 or aportion of the video game 112. In some cases, each of the number ofseeds may be associated with configuring the same portion of the videogame 112.

For each seed identified at the block 702, the seed evaluation system136 monitors the progress of the set of users playing or accessing thevideo game 112 over time to obtain progress data associated with theseed at block 704. In some cases, each seed will be evaluated with adifferent set of users because, for example, only one seed may be usedduring a particular play session with a particular account of aparticular user for some types of video games. For example, if the seedvalue is associated with a layout of a particular level, it is possiblethat the layout of the particular level will not change once set for aparticular user. However, in some other cases, each seed may beevaluated with the same set of users because, for example, the seedvalues are used repeatedly during play sessions of the video game. Forexample, if the seed value is associated with a starting set of cards ina card battle game, a starting set of cards may be generated each timethe user plays a round providing an opportunity for a number ofdifferent seed values to be evaluated with a particular user.

In some implementations, the set of users monitored at the block 704 areselected based on the skill level associated with the set of users or auser cluster associated with a set of users. For example, each of theseed values may be evaluated by users who are determined to have roughlythe same skill level. Alternatively, each of the seed values may beevaluated by a number of users with varying degrees of skill.

The progress data obtained at the block 704 may reflect the amount ofprogress that the monitored users have made playing the video game 112with a particular seed value. For example, the progress data mayindicate whether a particular user or set of users completed anobjective with a particular seed value or failed to complete anobjective with the particular seed value.

At block 706, for each seed evaluated, the seed evaluation system 136normalizes the progress data based on skill data associated with eachuser from each of the sets of users. In other words, in some cases, theprogress data obtained for each of the seed values may be normalized sothat the different skill levels of different users do not impact theevaluation of the seeds. Alternatively, or in addition, progress dataobtained with respect to a particular user for a seed may be weightedbased on the user's skill level as determined by, for example, the userclustering system 134. In some cases, the user's skill level may bedetermined based on points earned playing the video game 112 or someother metric for monitoring the skills of a particular user.

In some embodiments, the block 706 may be optional or omitted. Forexample, in cases where the set of users selected to evaluate each seedare associated with a particular user cluster or are each determined tohave less than a threshold difference of skill level, it may beunnecessary to normalize the progress data and the block 706 may beomitted.

At block 708, the seed evaluation system 136 determines a difficultyassociated with each seed based on the associated normalize progressdata. The difficulty may be determined based on the number or percentageof users who are successful or unsuccessful in completing an objectiveor a portion of the video game 112 when a particular seed valueassociated with the objective or the portion of the video game 112 isused. Advantageously, in certain embodiments, by evaluating thedifficulty of seed values, it is possible to group or cluster sets ofseed values for a particular difficulty levels. Thus, in some cases, ifit is determined that a particular user prefers to play easier videogames, seed values that are associated with a lower difficulty level maybe used to generate portions of the video game 112. Further, the process700 enables developers to confirm the level of difficulty associatedwith a particular seed value and to make adjustments to theclassification of a particular seed value. For example, a particularseed value may be used with players who select an easy difficulty level.However, after evaluating a number of play sessions for a number ofusers with the particular seed value using the process 700, it may bedetermined that the seed value causes a portion of the video game 112 tobe significantly more challenging than when the portion of the videogame 112 is associated with other seed values. In such a case, theparticular seed value may be reclassified for use with players whoprefer or select a harder difficulty level and may be removed fromavailability for use with players who prefer or select an easydifficulty level.

Overview of Computing System

FIG. 8 illustrates an embodiment of a user computing system 110, whichmay also be referred to as a gaming system. As illustrated, the usercomputing system 110 may be a single computing device that can include anumber of elements. However, in some cases, the user computing system110 may include multiple devices. For example, the user computing system110 may include one device that includes that includes a centralprocessing unit and a graphics processing unit, another device thatincludes a display, and another device that includes an input mechanism,such as a keyboard or mouse.

The user computing system 110 can be an embodiment of a computing systemthat can execute a game system. In the non-limiting example of FIG. 8,the user computing system 110 is a touch-capable computing devicecapable of receiving input from a user via a touchscreen display 802.However, the user computing system 110 is not limited as such and mayinclude non-touch capable embodiments, which do not include atouchscreen display 802.

The user computing system 110 includes a touchscreen display 802 and atouchscreen interface 804, and is configured to execute a gameapplication 810. This game application may be the video game 112 or anapplication that executes in conjunction with or in support of the videogame 112, such as a video game execution environment. Although describedas a game application 810, in some embodiments the application 810 maybe another type of application that may have a variable execution statebased at least in part on the preferences or capabilities of a user,such as educational software. While user computing system 110 includesthe touchscreen display 802, it is recognized that a variety of inputdevices may be used in addition to or in place of the touchscreendisplay 802.

The user computing system 110 can include one or more processors, suchas central processing units (CPUs), graphics processing units (GPUs),and accelerated processing units (APUs). Further, the user computingsystem 110 may include one or more data storage elements. In someembodiments, the user computing system 110 can be a specializedcomputing device created for the purpose of executing game applications810. For example, the user computing system 110 may be a video gameconsole. The game applications 810 executed by the user computing system110 may be created using a particular application programming interface(API) or compiled into a particular instruction set that may be specificto the user computing system 110. In some embodiments, the usercomputing system 110 may be a general purpose computing device capableof executing game applications 810 and non-game applications. Forexample, the user computing system 110 may be a laptop with anintegrated touchscreen display or desktop computer with an externaltouchscreen display. Components of an example embodiment of a usercomputing system 110 are described in more detail with respect to FIG.9.

The touchscreen display 802 can be a capacitive touchscreen, a resistivetouchscreen, a surface acoustic wave touchscreen, or other type oftouchscreen technology that is configured to receive tactile inputs,also referred to as touch inputs, from a user. For example, the touchinputs can be received via a finger touching the screen, multiplefingers touching the screen, a stylus, or other stimuli that can be usedto register a touch input on the touchscreen display 802. Thetouchscreen interface 804 can be configured to translate the touch inputinto data and output the data such that it can be interpreted bycomponents of the user computing system 110, such as an operating systemand the game application 810. The touchscreen interface 804 cantranslate characteristics of the tactile touch input touch into touchinput data. Some example characteristics of a touch input can include,shape, size, pressure, location, direction, momentum, duration, and/orother characteristics. The touchscreen interface 804 can be configuredto determine the type of touch input, such as, for example a tap (forexample, touch and release at a single location) or a swipe (forexample, movement through a plurality of locations on touchscreen in asingle touch input). The touchscreen interface 804 can be configured todetect and output touch input data associated with multiple touch inputsoccurring simultaneously or substantially in parallel. In some cases,the simultaneous touch inputs may include instances where a usermaintains a first touch on the touchscreen display 802 whilesubsequently performing a second touch on the touchscreen display 802.The touchscreen interface 804 can be configured to detect movement ofthe touch inputs. The touch input data can be transmitted to componentsof the user computing system 110 for processing. For example, the touchinput data can be transmitted directly to the game application 810 forprocessing.

In some embodiments, the touch input data can undergo processing and/orfiltering by the touchscreen interface 804, an operating system, orother components prior to being output to the game application 810. Asone example, raw touch input data can be captured from a touch input.The raw data can be filtered to remove background noise, pressure valuesassociated with the input can be measured, and location coordinatesassociated with the touch input can be calculated. The type of touchinput data provided to the game application 810 can be dependent uponthe specific implementation of the touchscreen interface 804 and theparticular API associated with the touchscreen interface 804. In someembodiments, the touch input data can include location coordinates ofthe touch input. The touch signal data can be output at a definedfrequency. Processing the touch inputs can be computed many times persecond and the touch input data can be output to the game applicationfor further processing.

A game application 810 can be configured to be executed on the usercomputing system 110. The game application 810 may also be referred toas a video game, a game, game code and/or a game program. A gameapplication should be understood to include software code that a usercomputing system 110 can use to provide a game for a user to play. Agame application 810 might comprise software code that informs a usercomputing system 110 of processor instructions to execute, but mightalso include data used in the playing of the game, such as data relatingto constants, images and other data structures. For example, in theillustrated embodiment, the game application includes a game engine 812,game data 814, and game state information 816.

The touchscreen interface 804 or another component of the user computingsystem 110, such as the operating system, can provide user input, suchas touch inputs, to the game application 810. In some embodiments, theuser computing system 110 may include alternative or additional userinput devices, such as a mouse, a keyboard, a camera, a game controller,and the like. A user can interact with the game application 810 via thetouchscreen interface 804 and/or one or more of the alternative oradditional user input devices. The game engine 812 can be configured toexecute aspects of the operation of the game application 810 within theuser computing system 110. Execution of aspects of gameplay within agame application can be based, at least in part, on the user inputreceived, the game data 814, and game state information 816. The gamedata 814 can include game rules, prerecorded motion capture poses/paths,environmental settings, constraints, animation reference curves,skeleton models, and/or other game application information. Further, thegame data 814 may include information that is used to set or adjust thedifficulty of the game application 810.

The game engine 812 can execute gameplay within the game according tothe game rules. Some examples of game rules can include rules forscoring, possible inputs, actions/events, movement in response toinputs, and the like. Other components can control what inputs areaccepted and how the game progresses, and other aspects of gameplay.During execution of the game application 810, the game application 810can store game state information 816, which can include characterstates, environment states, scene object storage, and/or otherinformation associated with a state of execution of the game application810. For example, the game state information 816 can identify the stateof the game application at a specific point in time, such as a characterposition, character action, game level attributes, and other informationcontributing to a state of the game application.

The game engine 812 can receive the user inputs and determine in-gameevents, such as actions, collisions, runs, throws, attacks and otherevents appropriate for the game application 810. During operation, thegame engine 812 can read in game data 814 and game state information 816in order to determine the appropriate in-game events. In one example,after the game engine 812 determines the character events, the characterevents can be conveyed to a movement engine that can determine theappropriate motions the characters should make in response to the eventsand passes those motions on to an animation engine. The animation enginecan determine new poses for the characters and provide the new poses toa skinning and rendering engine. The skinning and rendering engine, inturn, can provide character images to an object combiner in order tocombine animate, inanimate, and background objects into a full scene.The full scene can conveyed to a renderer, which can generate a newframe for display to the user. The process can be repeated for renderingeach frame during execution of the game application. Though the processhas been described in the context of a character, the process can beapplied to any process for processing events and rendering the outputfor display to a user.

Example Hardware Configuration of Computing System

FIG. 9 illustrates an embodiment of a hardware configuration for theuser computing system 110 of FIG. 8. Other variations of the usercomputing system 110 may be substituted for the examples explicitlypresented herein, such as removing or adding components to the usercomputing system 110. The user computing system 110 may include adedicated game device, a smart phone, a tablet, a personal computer, adesktop, a laptop, a smart television, a car console display, and thelike. Further, (although not explicitly illustrated in FIG. 9) asdescribed with respect to FIG. 8, the user computing system 110 mayoptionally include a touchscreen display 802 and a touchscreen interface804.

As shown, the user computing system 110 includes a processing unit 20that interacts with other components of the user computing system 110and also components external to the user computing system 110. A gamemedia reader 22 may be included that can communicate with game media 12.Game media reader 22 may be an optical disc reader capable of readingoptical discs, such as CD-ROM or DVDs, or any other type of reader thatcan receive and read data from game media 12. In some embodiments, thegame media reader 22 may be optional or omitted. For example, gamecontent or applications may be accessed over a network via the networkI/O 38 rendering the game media reader 22 and/or the game media 12optional.

The user computing system 110 may include a separate graphics processor24. In some cases, the graphics processor 24 may be built into theprocessing unit 20, such as with an APU. In some such cases, thegraphics processor 24 may share Random Access Memory (RAM) with theprocessing unit 20. Alternatively, or in addition, the user computingsystem 110 may include a discrete graphics processor 24 that is separatefrom the processing unit 20. In some such cases, the graphics processor24 may have separate RAM from the processing unit 20. Further, in somecases, the graphics processor 24 may work in conjunction with one ormore additional graphics processors and/or with an embedded ornon-discrete graphics processing unit, which may be embedded into amotherboard and which is sometimes referred to as an on-board graphicschip or device.

The user computing system 110 also includes various components forenabling input/output, such as an I/O 32, a user I/O 34, a display I/O36, and a network I/O 38. As previously described, the input/outputcomponents may, in some cases, including touch-enabled devices. The I/O32 interacts with storage element 40 and, through a device 42, removablestorage media 44 in order to provide storage for computing device 800.Processing unit 20 can communicate through I/O 32 to store data, such asgame state data and any shared data files. In addition to storage 40 andremovable storage media 44, computing device 800 is also shown includingROM (Read-Only Memory) 46 and RAM 48. RAM 48 may be used for data thatis accessed frequently, such as when a game is being played.

User I/O 34 is used to send and receive commands between processing unit20 and user devices, such as game controllers. In some embodiments, theuser I/O 34 can include touchscreen inputs. As previously described, thetouchscreen can be a capacitive touchscreen, a resistive touchscreen, orother type of touchscreen technology that is configured to receive userinput through tactile inputs from the user. Display I/O 36 providesinput/output functions that are used to display images from the gamebeing played. Network I/O 38 is used for input/output functions for anetwork. Network I/O 38 may be used during execution of a game, such aswhen a game is being played online or being accessed online.

Display output signals may be produced by the display I/O 36 and caninclude signals for displaying visual content produced by the computingdevice 800 on a display device, such as graphics, user interfaces,video, and/or other visual content. The user computing system 110 maycomprise one or more integrated displays configured to receive displayoutput signals produced by the display I/O 36, which may be output fordisplay to a user. According to some embodiments, display output signalsproduced by the display I/O 36 may also be output to one or more displaydevices external to the computing device 800.

The user computing system 110 can also include other features that maybe used with a game, such as a clock 50, flash memory 52, and othercomponents. An audio/video player 56 might also be used to play a videosequence, such as a movie. It should be understood that other componentsmay be provided in the user computing system 110 and that a personskilled in the art will appreciate other variations of the usercomputing system 110.

Program code can be stored in ROM 46, RAM 48, or storage 40 (which mightcomprise hard disk, other magnetic storage, optical storage, solid statedrives, and/or other non-volatile storage, or a combination or variationof these). At least part of the program code can be stored in ROM thatis programmable (ROM, PROM, EPROM, EEPROM, and so forth), in storage 40,and/or on removable media such as game media 12 (which can be a CD-ROM,cartridge, memory chip or the like, or obtained over a network or otherelectronic channel as needed). In general, program code can be foundembodied in a tangible non-transitory signal-bearing medium.

Random access memory (RAM) 48 (and possibly other storage) is usable tostore variables and other game and processor data as needed. RAM is usedand holds data that is generated during the play of the game andportions thereof might also be reserved for frame buffers, game stateand/or other data needed or usable for interpreting user input andgenerating game displays. Generally, RAM 48 is volatile storage and datastored within RAM 48 may be lost when the user computing system 110 isturned off or loses power.

As user computing system 110 reads game media 12 and provides a game,information may be read from game media 12 and stored in a memorydevice, such as RAM 48. Additionally, data from storage 40, ROM 46,servers accessed via a network (not shown), or removable storage media46 may be read and loaded into RAM 48. Although data is described asbeing found in RAM 48, it will be understood that data does not have tobe stored in RAM 48 and may be stored in other memory accessible toprocessing unit 20 or distributed among several media, such as gamemedia 12 and storage 40.

ADDITIONAL EMBODIMENTS

In certain embodiments, a computer-implemented method is disclosed thatmay be implemented by an interactive computing system configured withspecific computer-executable instructions to at least determine a useridentifier of a first user who is playing a video game on a usercomputing device. The method may further include identifying a usercluster associated with the first user from a plurality of user clustersbased at least in part on the user identifier of the first user. Eachuser cluster from the plurality of user clusters may correspond todifferent state preferences for the video game. Moreover, based at leastin part on state preferences associated with the identified usercluster, the method may include determining a configuration value for aknob associated with the video game. The knob may include a variablethat when adjusted causes a modification to a state of the video game.In addition, the method may include accessing recent user interactiondata associated with the first user playing the video game over a firsttime period and determining an adjustment to the configuration valuebased at least in part on the recent user interaction data to obtain amodified configuration value. Further, the method may include generatinga configuration data package that comprises the modified configurationvalue for transmission to the user computing device for modifyingexecution of the video game by adjusting the knob based at least in parton the modified configuration value.

In some implementations, the modification to the state of the video gameadjusts a difficulty of the video game. Further, the first time periodmay be less than a first threshold time period. In addition, the methodmay include generating the plurality of user clusters by at leastidentifying a plurality of users who play a second video game andobtaining user interaction data for each user of the plurality of usersby at least monitoring the user's interaction with the second video gameover a second time period. In addition, the method may includedetermining a level of engagement for each user of the plurality ofusers based at least in part on the user interaction data anddetermining the plurality of user clusters based at least in part on theuser interaction data for each user of the plurality of users and thelevel of engagement for each user of the plurality of users. In somecases, the second video game and the video game are the same. Further,the second time period may be greater than a second threshold timeperiod.

In some embodiments, the method includes associating the first user withthe user cluster by at least obtaining historical user interaction datafor the first user by at least monitoring the first user's interactionwith a third video game over a third time period, accessing clusterdefinitions for the plurality of user clusters, and selecting the usercluster from the plurality of user clusters based at least in part onthe historical user interaction data and the cluster definitions for theplurality of user clusters. In some cases, the third video game and thevideo game are the same. Further, the third time period may be longerthan the first time period.

In certain embodiments of the present disclosure, a system comprising anelectronic data store configured to store user interaction data withrespect to a video game and a hardware processor in communication withthe electronic data store is disclosed. The hardware processor may beconfigured to execute specific computer-executable instructions to atleast identify a user cluster associated with a first user from aplurality of user clusters. At least some of the user clusters from theplurality of user clusters may correspond to different state preferencesfor video games played by users associated with the user cluster. Thesystem, based at least in part on state preferences associated with theidentified user cluster, may further determine a configuration value fora state variable associated with a video game played by the first user.In addition, the system may access, from the electronic data store,recent user interaction data associated with the first user accessingthe video game over a first time period and determine an adjustment tothe configuration value based at least in part on the recent userinteraction data to obtain a modified configuration value. Moreover, thesystem may generate a configuration data package that comprises themodified configuration value for transmission to a user computing devicefor modifying execution of the video game by adjusting the statevariable based at least in part on the modified configuration value.

In certain implementations, the modified execution of the video game isundetectable by the first user. Further, the first time period mayinclude a dynamic time window that adjusts with the passage of time. Insome embodiments, at least the accessing recent user interaction data,the determining an adjustment to the configuration value, and themodifying the execution of the video game is repeated in response to atrigger event occurring during a play session of the video game by thefirst user.

In some implementations, the hardware processor is further configured togenerate the plurality of user clusters by executing specificcomputer-executable instructions to at least identify a plurality ofusers who play the video game and access user interaction dataassociated with accessing the video game from the electronic data storefor each user of the plurality of users. The user interaction data maybe recorded over a second time period. Further, the system may determinea level of engagement for each user of the plurality of users based atleast in part on the user interaction data and determine the pluralityof user clusters based at least in part on the user interaction data foreach user of the plurality of users and the level of engagement for eachuser of the plurality of users.

Further, the system may associate the first user with the user clusterby executing specific computer-executable instructions to at leastobtain historical user interaction data for the first user by at leastmonitoring the first user's access of the video game over a third timeperiod. The system may further access cluster definitions for theplurality of user clusters and select the user cluster from theplurality of user clusters based at least in part on the historical userinteraction data and the cluster definitions for the plurality ofclusters. In some cases, the third time period precedes the first timeperiod and the third time period is longer than the first time period.

In certain embodiments of the present disclosure, a non-transitorycomputer-readable storage medium storing computer executableinstructions that, when executed by one or more computing devices,configure the one or more computing devices to perform operationscomprising identifying a user cluster associated with a first user froma plurality of user clusters. At least some of the user clusters fromthe plurality of user clusters may correspond to different statesettings for applications accessed by users associated with the usercluster. Moreover, based at least in part on state settings associatedwith the identified user cluster, the operations may include determininga configuration value for a state variable associated with anapplication accessed by the first user and accessing recent userinteraction data associated with the first user accessing theapplication over a first time period. In addition, the operations mayinclude determining an adjustment to the configuration value based atleast in part on the recent user interaction data to obtain a modifiedconfiguration value and generating a configuration data package thatcomprises the modified configuration value for transmission to a usercomputing device for modifying execution of the application by adjustingthe state variable based at least in part on the modified configurationvalue.

In some implementations, the operations further comprise generating theplurality of user clusters by at least identifying a plurality of userswho access the application and obtaining user interaction data for eachuser of the plurality of users by at least monitoring the user'sinteraction with the application over a second time period. In addition,the operations may include determining a level of engagement for eachuser of the plurality of users based at least in part on the userinteraction data and determining the plurality of user clusters based atleast in part on the user interaction data for each user of theplurality of users and the level of engagement for each user of theplurality of users.

In some cases, the operations may further include associating the firstuser with the user cluster by at least obtaining historical userinteraction data for the first user by at least monitoring the firstuser's access of the application over a third time period anddetermining difficulty preferences for the first user based at least inpart on the historical user interaction data. In addition, theoperations may include accessing cluster definitions for the pluralityof user clusters. Each cluster definition may identify difficultypreferences for users associated with the corresponding user cluster.Further, the operations may include selecting the user cluster from theplurality of user clusters by matching the difficulty preference for thefirst user with the difficulty preferences of the cluster definitioncorresponding to the user cluster. In addition, the third time periodmay begin at a point in time that precedes the start of the first timeperiod and the third time period may be longer than the first timeperiod.

It is to be understood that not necessarily all objects or advantagesmay be achieved in accordance with any particular embodiment describedherein. Thus, for example, those skilled in the art will recognize thatcertain embodiments may be configured to operate in a manner thatachieves or optimizes one advantage or group of advantages as taughtherein without necessarily achieving other objects or advantages as maybe taught or suggested herein.

All of the processes described herein may be embodied in, and fullyautomated via, software code modules executed by a computing system thatincludes one or more computers or processors. The code modules may bestored in any type of non-transitory computer-readable medium or othercomputer storage device. Some or all the methods may be embodied inspecialized computer hardware.

Many other variations than those described herein will be apparent fromthis disclosure. For example, depending on the embodiment, certain acts,events, or functions of any of the algorithms described herein can beperformed in a different sequence, can be added, merged, or left outaltogether (for example, not all described acts or events are necessaryfor the practice of the algorithms). Moreover, in certain embodiments,acts or events can be performed concurrently, for example, throughmulti-threaded processing, interrupt processing, or multiple processorsor processor cores or on other parallel architectures, rather thansequentially. In addition, different tasks or processes can be performedby different machines and/or computing systems that can functiontogether.

The various illustrative logical blocks and modules described inconnection with the embodiments disclosed herein can be implemented orperformed by a machine, such as a processing unit or processor, adigital signal processor (DSP), an application specific integratedcircuit (ASIC), a field programmable gate array (FPGA) or otherprogrammable logic device, discrete gate or transistor logic, discretehardware components, or any combination thereof designed to perform thefunctions described herein. A processor can be a microprocessor, but inthe alternative, the processor can be a controller, microcontroller, orstate machine, combinations of the same, or the like. A processor caninclude electrical circuitry configured to process computer-executableinstructions. In another embodiment, a processor includes an FPGA orother programmable device that performs logic operations withoutprocessing computer-executable instructions. A processor can also beimplemented as a combination of computing devices, for example, acombination of a DSP and a microprocessor, a plurality ofmicroprocessors, one or more microprocessors in conjunction with a DSPcore, or any other such configuration. Although described hereinprimarily with respect to digital technology, a processor may alsoinclude primarily analog components. A computing environment can includeany type of computer system, including, but not limited to, a computersystem based on a microprocessor, a mainframe computer, a digital signalprocessor, a portable computing device, a device controller, or acomputational engine within an appliance, to name a few.

Conditional language such as, among others, “can,” “could,” “might” or“may,” unless specifically stated otherwise, are otherwise understoodwithin the context as used in general to convey that certain embodimentsinclude, while other embodiments do not include, certain features,elements and/or steps. Thus, such conditional language is not generallyintended to imply that features, elements and/or steps are in any wayrequired for one or more embodiments or that one or more embodimentsnecessarily include logic for deciding, with or without user input orprompting, whether these features, elements and/or steps are included orare to be performed in any particular embodiment.

Disjunctive language such as the phrase “at least one of X, Y, or Z,”unless specifically stated otherwise, is otherwise understood with thecontext as used in general to present that an item, term, etc., may beeither X, Y, or Z, or any combination thereof (for example, X, Y, and/orZ). Thus, such disjunctive language is not generally intended to, andshould not, imply that certain embodiments require at least one of X, atleast one of Y, or at least one of Z to each be present.

Any process descriptions, elements or blocks in the flow diagramsdescribed herein and/or depicted in the attached figures should beunderstood as potentially representing modules, segments, or portions ofcode which include one or more executable instructions for implementingspecific logical functions or elements in the process. Alternateimplementations are included within the scope of the embodimentsdescribed herein in which elements or functions may be deleted, executedout of order from that shown, or discussed, including substantiallyconcurrently or in reverse order, depending on the functionalityinvolved as would be understood by those skilled in the art.

Unless otherwise explicitly stated, articles such as “a” or “an” shouldgenerally be interpreted to include one or more described items.Accordingly, phrases such as “a device configured to” are intended toinclude one or more recited devices. Such one or more recited devicescan also be collectively configured to carry out the stated recitations.For example, “a processor configured to carry out recitations A, B andC” can include a first processor configured to carry out recitation Aworking in conjunction with a second processor configured to carry outrecitations B and C.

It should be emphasized that many variations and modifications may bemade to the above-described embodiments, the elements of which are to beunderstood as being among other acceptable examples. All suchmodifications and variations are intended to be included herein withinthe scope of this disclosure.

What is claimed is:
 1. A computer-implemented method comprising: asimplemented by an interactive computing system configured with specificcomputer-executable instructions, accessing user interaction data of auser, wherein the user interaction data is associated with interactionby the user with a video game; accessing a plurality of clusterdefinitions associated with a plurality of clusters, wherein eachcluster definition of the plurality of cluster definitions is associatedwith a different cluster of the plurality of clusters, and wherein eachcluster of the plurality of clusters comprises an identity of one ormore users who share one or more engagement characteristics associatedwith interaction with the video game; selecting a target cluster fromthe plurality of clusters based at least in part on the user interactiondata of the user and the plurality of cluster definitions; identifying aconfiguration value for a state variable of the video game based atleast in part on the target cluster; and configuring the state variableusing the configuration value, wherein configuring the state variableadjusts a difficulty of the video game.
 2. The computer-implementedmethod of claim 1, wherein the state variable comprises a seed valuethat modifies execution of the video game.
 3. The computer-implementedmethod of claim 1, further comprising monitoring the user's interactionwith the video game over a time period to obtain the user interactiondata.
 4. The computer-implemented method of claim 1, wherein a change inexecution of the video game associated with configuring the statevariable is undetectable by the user.
 5. The computer-implemented methodof claim 1, wherein selecting the target cluster from the plurality ofclusters comprises matching characteristics of the user interaction datawith characteristics associated with each of the plurality of clusters.6. The computer-implemented method of claim 1, further comprisingstoring an association between the user and the target cluster.
 7. Thecomputer-implemented method of claim 1, wherein the plurality ofclusters are associated with the video game, and wherein a secondplurality of clusters are associated with a second video game.
 8. Thecomputer-implemented method of claim 1, wherein each cluster from theplurality of clusters is associated with a different difficulty levelfor the video game, and wherein identifying the configuration value forthe state variable comprises determining a difficulty level associatedwith the target cluster.
 9. The computer-implemented method of claim 1,further comprising: determining a user success value by predicting auser's success at playing the video game based at least in part on thetarget cluster and the user interaction data; and selecting theconfiguration value based at least in part on the user success value.10. The computer-implemented method of claim 1, further comprising:obtaining second user interaction data of the user based on interactionwith the video game that is more recent than the interaction with thevideo game associated with the user interaction data; and modifying theconfiguration value for the state variable based at least in part on thesecond user interaction data.
 11. The computer-implemented method ofclaim 1, wherein the one or more engagement characteristics maycorrespond to one or more of time played, success rate with respect toin-game objectives, or difficulty of video games.
 12. Thecomputer-implemented method of claim 1, further comprising presenting anengagement characteristic associated with the target cluster to theuser.
 13. The computer-implemented method of claim 12, furthercomprising receiving feedback from the user associated with theengagement characteristic and modifying selection of the target clusterto select a second target cluster based at least in part on the feedbackfrom the user.
 14. A system comprising: an electronic data storeconfigured to store cluster definitions that group user identities ofusers who play a video game, wherein each cluster definition isassociated with a particular engagement characteristic associated withplaying the video game; and a hardware processor in communication withthe electronic data store, the hardware processor configured to executespecific computer-executable instructions to at least: access userinteraction data of a user, wherein the user interaction data isassociated with interaction by the user with the video game; access fromthe electronic data store a plurality of cluster definitions associatedwith a plurality of clusters, wherein each cluster definition of theplurality of cluster definitions is associated with a different clusterof the plurality of clusters, and wherein each cluster of the pluralityof clusters comprises an identity of one or more users who share one ormore engagement characteristics associated with interaction with thevideo game; select a target cluster from the plurality of clusters basedat least in part on the user interaction data of the user and theplurality of cluster definitions; identify a configuration value for astate variable of the video game based at least in part on the targetcluster; and configure the state variable using the configuration value,wherein configuring the state variable adjusts a difficulty of the videogame.
 15. The system of claim 14, wherein a change in execution of thevideo game associated with configuring the state variable isundetectable by the user.
 16. The system of claim 14, wherein thehardware processor is further configured to select the target clusterfrom the plurality of clusters by at least matching characteristics ofthe user interaction data with characteristics associated with each ofthe plurality of clusters.
 17. The system of claim 14, wherein eachcluster from the plurality of clusters is associated with a differentdifficulty level for the video game, and wherein the hardware processoris further configured to identify the configuration value for the statevariable by at least determining a difficulty level associated with thetarget cluster.
 18. The system of claim 14, wherein the hardwareprocessor is further configured to execute specific computer-executableinstructions to at least: determine a predicted success of the user atplaying the video game based at least in part on the target cluster andthe user interaction data; and select the configuration value based atleast in part on the predicted success.
 19. The system of claim 14,wherein the hardware processor is further configured to execute specificcomputer-executable instructions to at least: obtain second userinteraction data of the user based on interaction with the video gamethat is more recent than the interaction with the video game associatedwith the user interaction data; and modify the configuration value forthe state variable based at least in part on the second user interactiondata.
 20. The system of claim 14, wherein the hardware processor isfurther configured to execute specific computer-executable instructionsto at least: present an engagement characteristic associated with thetarget cluster to the user; receive feedback from the user associatedwith the engagement characteristic; and modify selection of the targetcluster to select a second target cluster based at least in part on thefeedback from the user.